2

vim中的以下问题:

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

#abcONE# #abcTWO#

和搜索模式

\(#abc...#\)*

我想同时获得这两个群体

1: #abcONE#   2: #abcTWO#

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

#abcTWO#

你知道解决办法吗?

4

2 回答 2

1

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

那么为什么不将多项扩展*成不同的组,所有匹配可选\?

\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?
于 2012-04-30T11:58:57.260 回答
0

你会如何处理匹配的模式?替换?

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

你的\(#abc...#\)*行不通。因为你的两个“#abc ...#”之间有一个空格

于 2012-04-30T10:33:09.350 回答