我的文本文件中有以下内容:
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 中做一些特别的事情吗?
非贪婪字符
?
在 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
vim 的正则表达式语法有点不同——你要找的是
cv_.\{-}\s
(
\{-}
是 Perl 的 *?
的 vim 等价物,即非贪婪 0 或更多)。有关 vim 正则表达式的优秀教程,请参见 here。