2

我在理解为什么正则表达式不起作用时遇到了一些麻烦。我正在搜索短语@Test(groups = {"broken"}),但无法使用以下表达式找到它:

@Test\(groups = {"broken"}\)

但是,此表达式会产生结果:

@Test\(.*groups = {"broken"}\)

为什么会这样?我不明白为什么第一个表达式不起作用,但我理解为什么第二个表达式起作用。

4

2 回答 2

9

\(用于在 vim 中捕获,因为它默认不使用扩展/“魔术”正则表达式。如果要搜索文字括号,请使用(.

第二个表达式有效,因为.*matches (

于 2013-06-14T18:46:01.300 回答
4

如果您想搜索文字文本,只需\V添加到搜索模式之前;那么,只有反斜杠有特殊含义,必须转义:

/\V@Test(groups = {"broken"})

与大多数其他正则表达式方言相比,许多 Vim 原子需要前缀\为非字面量。为了让 Vim 的模式看起来更像 Perl 的,你可以在前面加上\v; 然后,(...)进行捕获分组(如您所料),您需要转义\(以匹配文字括号。

于 2013-06-14T18:56:03.657 回答