如果我想要所有帶有'ruby'文本但不是'myruby'的文本,那麼這就是我要做的。vim的正則表達式解釋
:g/\<ruby\>/
我的問題是小於和大於符號在這裏的含義是什麼?我使用的唯一正則表達式是在用Ruby進行編程時。
同樣的,如果我想找到三個連續的空行,那麼這是我會做什麼
/^\n\{3}
我的問題是,爲什麼我逃避第一個花括號(大括號),而不是逃避第二捲曲大括號(關閉大括號)?
如果我想要所有帶有'ruby'文本但不是'myruby'的文本,那麼這就是我要做的。vim的正則表達式解釋
:g/\<ruby\>/
我的問題是小於和大於符號在這裏的含義是什麼?我使用的唯一正則表達式是在用Ruby進行編程時。
同樣的,如果我想找到三個連續的空行,那麼這是我會做什麼
/^\n\{3}
我的問題是,爲什麼我逃避第一個花括號(大括號),而不是逃避第二捲曲大括號(關閉大括號)?
的\<
和\>
平均字邊界。在Perl中,grep和更少(爲了命名3 OTOH),您使用\b
,所以我想它在Ruby中是一樣的。
關於你提到的第二個問題,是需要整個表達式{3}
逃逸。你不是逃避每個花括號,而是整個事情在一起。
更多見this question。
爲了您的第一個正規表達式,你也可以這樣做:
:g/[^\ ]ruby\/
這將確保有一個空間之前,你的紅寶石關鍵字之後。
Vim在正則表達式中用於反斜槓轉義的規則不一致。你要逃離的\{...}
左括號,但[...]
不需要逃避可言,並且捕獲組是\(...\)
(避讓開,關括號)。還有其他不一致之處。
值得慶幸的Vim讓你改變這種行爲,即使是正則表達式,通過正則表達式的基礎上,通過magic
設置。如果將\v
置於正則表達式的開頭,轉義規則會變得更加一致;除數字,字母和下劃線之外,所有內容都是「神奇」的,所以除非你想插入除這些之外的文字字符,否則不需要反斜槓。
你的第一個例子就變成:g/\v<ruby>/
和你的第二個例子變得/\v^\n{3}
。有關更多信息,請參閱:h /magic
和:h /\v
。
但這不符合在行的開始或結束處的`ruby`。 – 2009-06-29 13:23:11
@Nathan好點... – samoz 2009-06-29 13:24:37