vimの正規表現
vimの正規表現はこのページにまとめてあり、大変参考になる。
vimでプログラムを編集する際に注意していることをメモしておく。
角カッコ[]
対応している角カッコがあると正規表現として扱われる。
角カッコそのものを書くときはエスケープする。
対応するカッコ閉じはエスケープしなくていいようだ。
:s/[3]/[4]/g before: int a[3] after: int a[[4]] :s/\[3]/[4]/g before: int a[3] after: int a[4]
後方参照
丸カッコを後方参照で使うときはエスケープしなければならない。
エスケープされた丸カッコで括った内容を、\1や\2などで参照できる。
:s/(\(.*\))/\1/g before: "Snow (Hey Oh)" after: "Snow Hey Oh"
non-greedyなマッチング
*を使うと0回以上の繰り返しの最大マッチになる。
non-greedyにするには0回以上の繰り返しの最小マッチ\{-}を用いる。
:s/(3.*)/3/g before: (1 2 (3 nil nil) 4) after: (1 2 3 :s/(3.\{-})/3/g before: (1 2 (3 nil nil) 4) after: (1 2 3 4)
便利な記法
\<で単語の最初にマッチする。
:s/king/man/g before: "The king is streaking." after: "The man is streaman." :s/\<king/man/g before: "The king is streaking." after: "The man is streaking."
Perlの正規表現が書けるeregex.vimを使ったほうが良いかもしれない。