Vimエディタを使用して括弧内のパターンを置き換える方法

Vimエディタを使用して括弧内のパターンを置き換える方法

次のように:(コロン)で区切られた2つのフィールドを含むファイルがあります。

Ram:con_[3:4]_aen[52:7]
Rakesh:sync[0:128]

vimエディタを使用して、角括弧[]内の:(コロン)を次のように!に変換する必要があります。

Ram:con_[3!4]_aen[52!7]
Rakesh:sync[0!128]

私はこれを試しましたが、上記の結果は得られませんでした。

:%s/[%d:%d]/[%d!%d]/g

答え1

あなたが使用できる:

%s/\(\d\+\)\@<=:/!/g

\(\d\+\)素数を探す

\@<=積極的に振り返ってください。戻るとは、前のパターン(この場合は上記のパターン)が次の記号と一致する必要があることを意味します。 VIMがこれを達成する方法の詳細を学ぶことができます。ここ

:マッチ':'。

答え2

あなたはそれを使用することができます

:%s/\([[0-9]\+\):\([0-9]\+]\)/\1!\2/g

要素をグループ化し、[number1最初の要素と2番目の要素をnumber2]コピーし、それらの間に1つを配置しました。\([[0-9]\+\)\([0-9]\+]\)\1\2!

以前は1つ以上の数字を意味していましたが、コロンと各括弧の間に常に数字があると確信している場合は、[0-9]\+次のように単純化できます(ゼロ以上の数字を意味します)。[0-9]*

:%s/\([[0-9]*\):\([0-9]*]\)/\1!\2/g

答え3

:%s/\v\(\[[0-9]+):([0-9]+\])/\1!\2/g

\v追加の正規表現機能の有効化

(\[[0-9]+)左カッコと少なくとも 1 桁の数字で構成されるキャプチャグループ

:不要なコロン

([0-9]+\])1つ以上の数字と閉じ括弧で構成されるキャプチャグループ

\1!\2希望キャプチャグループと爆発の内容

関連情報