使用 vim、man 或 less 时在正则表达式中完全匹配

use*_*126 6 vim regular-expression

使用 vim、man 或 less 时,我想在 regrex 中进行一些精确匹配

例如,当使用 man 时,我想检查参数“-c”

如果我使用

  /'-c'
Run Code Online (Sandbox Code Playgroud)

匹配可能是 -cim -covert......blabla

但我只想匹配'-c'

如何进行精确匹配?谢谢!

use*_*855 5

一个较短的 vim 表达式,以确保前面或后面没有任何字符

/\(^\|\s\)\@<=-c\>
Run Code Online (Sandbox Code Playgroud)

人/少等价物:

/(^|\s)-c\b
Run Code Online (Sandbox Code Playgroud)

附加说明(Vim):

Vim 正则表达式中最有用的部分可能是-c\>简单地说“查找 '-c',但前提是后面没有字母”。大多数情况下,您可能只需使用 搜索就可以逃脱/-c\>,但为了完整起见,我包含了一个表达式来检查“-c”之前的内容。那个表达式 is \(^\|\s\)\@<=,它看起来很复杂,因为 Vim 的正则表达式语法有点冗长(因为它要求您转义分组括号和“或”管道)。该表达式的\(^\|\s\)意思是“行首或空格字符”。当你放\@<=在它之后,它的意思是“不要真正匹配它,只需确保它出现在正则表达式的下一部分之前”(这仅对搜索和替换操作真正有用)。实际上,您可能不需要该\@<=部件。你可以通过省略它并添加 来进一步缩短它\v,这告诉 Vim 你不会逃避花哨的语法。那看起来像/\v(^|\s)-c>.

man/less 等价物的解释:

简单多了。对于 less 使用的正则表达式语法(这是默认的手册页),\b与 Vim 的 相同\>,您不需要转义括号或管道字符。它只是查找出现在行首或紧接空白字符之后的字符串“-c”,并确保后面没有其他字母。


Chr*_*own 2

正在vim使用

/\(^\|\s\)-c\($\|\s\)
Run Code Online (Sandbox Code Playgroud)

less

/(^|\s)-c($|\s\)
Run Code Online (Sandbox Code Playgroud)

你可以isk在 vim 中使用 和 单词边界,但这也会匹配其他可能是选项的东西;显式查找空格更安全。