vim正则表达式与元字符

Omn*_*ent 6 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
Run Code Online (Sandbox Code Playgroud)

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

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

gak*_*gak 15

perl非贪婪的"?" char在Vim中不起作用,你应该使用:

cv_.\{-}\s
Run Code Online (Sandbox Code Playgroud)

代替

cv_.*?\s
Run Code Online (Sandbox Code Playgroud)

以下是匹配的快速参考:

     * (0 or more) greedy matching
    \+ (1 or more) greedy matching
  \{-} (0 or more) non-greedy matching
\{-n,} (at least n) non-greedy matching
Run Code Online (Sandbox Code Playgroud)

  • `\ ze`在空格字符之前结束匹配,因此不会被替换 (2认同)

Ale*_*lli 5

vim的regex语法有点不同-您正在寻找的是

cv_.\{-}\s
Run Code Online (Sandbox Code Playgroud)

\{-}相当于perl的vim *?,即非贪心的0或更多)。见这里关于vim的正则表达式一个很好的教程。