繁体   English   中英

使用正则表达式匹配vim中的括号时的奇怪行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM