vim正则表达式与元字符

时间:2009-10-21 03:00:26

标签: regex vim

我在文本文件中有以下文字

This is some text for cv_1 for example
This is some text for cv_001 for example
This is some text for cv_15 for example

我正在尝试使用正则表达式cv_.*?\s来匹配文本中的cv_1,cv_001,cv_15。我知道正则表达式有效。但是,当我在VIM中尝试时,它与任何东西都不匹配。

我们是否需要在VIM中做一些特别的事情?

2 个答案:

答案 0 :(得分:15)

perl非贪心“?” char在Vim中不起作用,你应该使用:

cv_.\{-}\s

而不是

cv_.*?\s

以下是匹配的快速参考:

* (0 or more) greedy matching
\+ (1 or more) greedy matching
\{-} (0 or more) non-greedy matching
\{-n,} (at least n) non-greedy matching

答案 1 :(得分:5)

vim的正则表达式语法有点不同 - 你要找的是

cv_.\{-}\s

\{-}是perl的*?的vim等价物,即非贪婪的0或更多。有关vim正则表达式的详细教程,请参阅here