2015-05-22 77 views
0

在vim的正則表達式的語法,我想匹配所有單詞用大寫字母開始,而不是開始下劃線vim的正則表達式匹配用大寫字母,但不強調

\\([A-Z][a-z_][A-Za-z_]\\+\\) 

這是什麼,我現在直到。

我想是這樣的:

\\([A-Z^\_][a-z_][A-Za-z_]\\+\\) 

[A-Z^\\_]表示它應該匹配所有大寫字符,而不是下劃線。

任何幫助將大大apreciated。提前致謝。

編輯:我的問題是很差woorded。我想讓第一組匹配一個大寫的char,在它前面沒有下劃線。抱歉。

回答

2

[A-Z]已經做不是包括下劃線;我猜你想匹配整個單詞,所以你不希望你的正則表達式匹配一個字。 VIM已經內置\<\>(在其他的正則表達式方言像\b,看到@ npinti的回答)爲關鍵字邊界;作爲低/大寫和下劃線字符通常是關鍵字的字符,這些包裹你的模式應該已經非常接近:

\<\([A-Z][a-z_][A-Za-z_]\+\)\> 

要嚴格堅持你的比賽前沒有下劃線(但允許任何其他關鍵字或非關鍵字字符有),你需要一個負回顧後\@<!意味着不受前面:

_\@<!\([A-Z][a-z_][A-Za-z_]\+\) 
0

其中[A-Z^\ _]表示它應該與所有大寫字符匹配,但不能用下劃線。

[A-Z] 已經與除下劃線之外的所有大寫字符匹配。然而,在你的第一個解決方案,您要求的字母小寫或下劃線([a-z_])。如果我堅持自己的定義:

所有單詞用大寫字母開始,而不是開始下劃線

然後[A-Z][A-Za-z_]+應該工作。

相關問題