- 更新日: 2015年11月16日
- Vim
Vimで正規表現の後方参照を使って置換
スポンサーリンク
ファイル中の特定の文字列を、Vim でコマンドモードの :%s で正規表現の後方参照を使って置換しようとしたところ、ちょっとやり方を迷ったのでメモ。
— 環境 —
Vim 7.3
Mac OS X Yosemite
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
グループ化には \(\) を、後方参照には \1, \2 … を使う
具体的な例を挙げますと、
1 2 3 |
aoo boo coo doo eoo foo goo hoo |
のような文字列の foo 以外の文字列を、「*aa」に置換したかった。* は後方参照して置換前の文字をそのまま置換後に入れる。置換後の文字列として、以下のような文字列になるようにしたかった。
1 2 3 |
aaa baa caa daa eaa foo gaa haa |
これを実現するために、まず文字列をグループ化するために \(\) で囲います。エスケープ付きのカッコを使う点に注意。最初エスケープを書かずにやったら上手く動作しませんでした。
次に、グループ化した文字列を後方参照するために、\1, \2, \3 … を使う。1番目の括弧、2番目の括弧、3番目の括弧…と対応していきます。
実際には…
1 2 3 |
:%s/\([^f]\)oo/\1aa/gc |
のコマンドで置換を行いました。
置換前の文字列…
1 2 3 |
aoo boo coo doo eoo foo goo hoo |
を、
1 2 3 |
:%s/\([^f]\)oo/\1aa/gc |
で置換しますと…
1 2 3 |
aaa baa caa daa eaa foo gaa haa |
と予定通り置換できて目的を果たせました。
スポンサーリンク
Vim を極めたければこの2冊ははずせません!
>> 次の記事 : VimでURLをブラウザで開く
<< 前の記事 : CoffeeLintのインストール・Vimで使う設定
- Vim の関連記事
- Vimでカーソル下の文字列をgrep(vimgrep)する.vimrc設定
- VimでURLをブラウザで開く
- CoffeeLintのインストール・Vimで使う設定
- scss-lintのインストール・Vimで使う設定
- Vimでインデント/タブ幅をファイル拡張子ごとに設定
- RuboCopをVimで使う設定(Syntastic/プラグイン)
- You must install neosnippet-snippets or disable runtime snippets(Vim)
- neobundle#rc() is removed function エラー(Vim)
- VimでSpaceを使った便利なキーバインド用vimrc設定
- Vimで行を結合、複数行を一発で連結する
Leave Your Message!