vim中的以下問題:用vim捕獲重複的表達式
我想捕獲不同匹配組中的子模式的每個匹配。一個例子:對於行:
#abcONE# #abcTWO#
和搜索模式
\(#abc...#\)*
欲獲得兩組
1: #abcONE# 2: #abcTWO#
不幸的是,我只獲得一組,至極包含最後識別的子模式,即
#abcTWO#
你知道一個解決方案嗎?
vim中的以下問題:用vim捕獲重複的表達式
我想捕獲不同匹配組中的子模式的每個匹配。一個例子:對於行:
#abcONE# #abcTWO#
和搜索模式
\(#abc...#\)*
欲獲得兩組
1: #abcONE# 2: #abcTWO#
不幸的是,我只獲得一組,至極包含最後識別的子模式,即
#abcTWO#
你知道一個解決方案嗎?
你會如何處理匹配的模板?替換?
/#abc...# will select both
:%s/\v(#abc...#)/foo/g will replace both
您的\(#abc...#\)*
不起作用。因爲您的兩個「#abc ...#」之間有一個空格「#abc ...#」
由於您只能直接通過編號\1
(而不是範圍或通配符)引用捕獲的組,因此您必須知道組的數量無論如何,事先使用。
那麼,爲什麼不展開多項目*
到不同的組,所有匹配的可選\?
:
\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?\(#abc...#\)\?