用vim捕获重复的表达式

时间:2012-04-30 09:55:33

标签: search vim design-patterns capture

在vim中遇到问题:

我想捕获不同匹配组中子模式的每个匹配项。一个例子:对于这一行:

#abcONE# #abcTWO#

和搜索模式

\(#abc...#\)*

我想获得两组

1: #abcONE#   2: #abcTWO#

不幸的是,我只获得了一个组,其中包含最后一个被识别的子模式,即

#abcTWO#

你知道解决方案吗?

2 个答案:

答案 0 :(得分:1)

由于您只能通过编号\1直接引用捕获的组(而不是通过范围或通配符),因此您必须事先知道预先使用的组数。

为什么然后不将多项*展开到不同的组中,所有这些都可以选择\?

\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?

答案 1 :(得分:0)

你会用匹配的模式做什么?替换?

/#abc...# will select both
:%s/\v(#abc...#)/foo/g will replace both

您的\(#abc...#\)*将无效。因为你的两个“#abc ...#”之间有一个空格