use*_*126 6 vim regular-expression
使用 vim、man 或 less 时,我想在 regrex 中进行一些精确匹配
例如,当使用 man 时,我想检查参数“-c”
如果我使用
/'-c'
Run Code Online (Sandbox Code Playgroud)
匹配可能是 -cim -covert......blabla
但我只想匹配'-c'
如何进行精确匹配?谢谢!
一个较短的 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”,并确保后面没有其他字母。
正在vim
使用
/\(^\|\s\)-c\($\|\s\)
Run Code Online (Sandbox Code Playgroud)
在less
:
/(^|\s)-c($|\s\)
Run Code Online (Sandbox Code Playgroud)
你可以isk
在 vim 中使用 和 单词边界,但这也会匹配其他可能是选项的东西;显式查找空格更安全。
归档时间: |
|
查看次数: |
6047 次 |
最近记录: |