[英]Strange behavior when using regex to match parentheses in vim
我在理解为什么正则表达式不起作用时遇到了一些麻烦。 我正在搜索@Test(groups = {"broken"})
这个短语,我无法用这个表达式找到它:
@Test\(groups = {"broken"}\)
但是,这个表达式产生了结果:
@Test\(.*groups = {"broken"}\)
为什么会这样? 我不明白为什么第一个表达式不起作用,但我明白为什么第二个表达式会起作用。
\\(
用于在vim中捕获,因为默认情况下它不使用扩展/“魔法”regexen。如果你想搜索文字paren,请使用(
。
第二个表达式有效,因为.*
匹配(
。
如果要搜索文字文本,只需将\\V
前置到搜索模式; 那么,只有反斜杠具有特殊含义,必须进行转义:
/\V@Test(groups = {"broken"})
与大多数其他正则表达式方言相反,许多Vim原子需要以\\
为前缀为非文字。 为了使Vim的模式看起来更像Perl,你可以添加\\v
; 然后, (...)
捕获分组(如你所料),你需要逃避\\(
以匹配文字括号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.