Vimで正規表現の後方参照を使って置換

スポンサーリンク

ファイル中の特定の文字列を、Vim でコマンドモードの :%s で正規表現の後方参照を使って置換しようとしたところ、ちょっとやり方を迷ったのでメモ。

— 環境 —
Vim 7.3
Mac OS X Yosemite

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

グループ化には \(\) を、後方参照には \1, \2 … を使う

具体的な例を挙げますと、

のような文字列の foo 以外の文字列を、「*aa」に置換したかった。* は後方参照して置換前の文字をそのまま置換後に入れる。置換後の文字列として、以下のような文字列になるようにしたかった。

これを実現するために、まず文字列をグループ化するために \(\) で囲います。エスケープ付きのカッコを使う点に注意。最初エスケープを書かずにやったら上手く動作しませんでした。

次に、グループ化した文字列を後方参照するために、\1, \2, \3 … を使う。1番目の括弧、2番目の括弧、3番目の括弧…と対応していきます。

実際には…

のコマンドで置換を行いました。

置換前の文字列…

を、

で置換しますと…

と予定通り置換できて目的を果たせました。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!