2

vimの次の問題:

サブパターンの各一致を別の一致グループにキャプチャしたいと考えています。例: 行の場合:

#abcONE# #abcTWO#

そして検索パターン

\(#abc...#\)*

両方のグループを取得したい

1: #abcONE#   2: #abcTWO#

残念ながら、最後に認識されたサブパターンを含むグループを 1 つしか取得できません。つまり、

#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...#\)*は動作しません。2つの「#abc...#」の間にスペースがあるため

于 2012-04-30T10:33:09.350 に答える