変数を使用してvim正規表現を置き換える方法

変数を使用してvim正規表現を置き換える方法

次の形式の複数行を含む大きなファイルがあります。

USet07-1
USet07-2
USet08-1
USet08-2
.
.
.
USet22-2
.
.
.

-.NETのこれらの文字列からハイフン/ダッシュを削除したいと思いますvim。以下を使用して文字列を検索します。

:/USet\d\d-\d

しかし、これを次に変えようとすると

:%s/Uset\d\d-\d/USet\d\d\d

はっきり理解しています

USetddd

すべての場合に。しかし、私が望むものは:

USet071
USet072
USet081
USet082
.
.
.
USet222
.
.
.

これはどのように達成できますか?一致文字列の一部を再利用して置換に使用できますか?

ベストアンサー1

はい、可能です。キャプチャグループ。デフォルトでは、パターンのさまざまな部分を次にラップし、\(...\)置換部分の次の部分を参照します\1

:%s/Uset\(\d\d\)-\(\d\)/USet\1\2

欲しいから削除するパターンの単一部分として、\zs(一致の開始)と\ze(一致の終了)を介して実際の一致を制限するより短いオプションがあります(まだ周囲の項目もあると主張しています)。

:%s/Uset\d\d\zs-\ze\d//

これは非常に基本的なものであり、キャプチャグループはsed多くの正規表現ベースのツールで一般的です(たとえば、コマンドを見つけて組み込みをナビゲートする方法を学びます。包括的で多くの:helpヒントを提供します。学習に専念すれば、Vimは非常に強力で効率的なエディタであることが証明されます。

おすすめ記事