在vim中遇到问题:
我想捕获不同匹配组中子模式的每个匹配项。一个例子:对于这一行:
#abcONE# #abcTWO#
和搜索模式
\(#abc...#\)*
我想获得两组
1: #abcONE# 2: #abcTWO#
不幸的是,我只获得了一个组,其中包含最后一个被识别的子模式,即
#abcTWO#
你知道解决方案吗?
答案 0 :(得分:1)
由于您只能通过编号\1
直接引用捕获的组(而不是通过范围或通配符),因此您必须事先知道预先使用的组数。
为什么然后不将多项*
展开到不同的组中,所有这些都可以选择\?
:
\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?
答案 1 :(得分:0)
你会用匹配的模式做什么?替换?
/#abc...# will select both
:%s/\v(#abc...#)/foo/g will replace both
您的\(#abc...#\)*
将无效。因为你的两个“#abc ...#”之间有一个空格