带有元字符的 vim 正则表达式

问题描述 投票:0回答:2

我的文本文件中有以下内容:

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 中做一些特别的事情吗?

regex vim
2个回答
18
投票

非贪婪字符

?
在 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

5
投票

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

cv_.\{-}\s

\{-}
是 Perl 的
*?
的 vim 等价物,即非贪婪 0 或更多)。有关 vim 正则表达式的优秀教程,请参见 here

© www.soinside.com 2019 - 2024. All rights reserved.