今さら正規表現に入門してみた話
正規表現使ってる人,カッコイイですよね.
正規表現を使う理由なんて,それだけでいいんです.
正規表現を使いこなすカッコイイエンジニアになろう.
1. デリミタ - 正規表現の対象範囲を教えてあげる
慣習的に/が使われていますが,実は何でもいいそうです.[1]
文字列をデリミタから始め,デリミタで終わらせることで正規表現の範囲が決まります.
例:/hello/
2. エスケープ - 特殊文字を通常文字として扱う
正規表現では,様々な特殊文字(メタ文字)が使われますが,それらを通常の文字列の一部として認識させるためにエスケープ\が必要です.
例えば,スペースは特殊文字として扱われる場合がありますが,検索対象が2語以上含む場合エスケープしてあげる必要があります.
以下の例では,worldの直前のスペース をエスケープ\しています.
例:/hello\ world/
3. いざ実践! - vimgrepで大量のソースコードから検索しよう
デリミタとエスケープを理解すれば,大抵の検索ニーズを満たすことができます.🎉
vimのノーマルモードで,:vim /hello\ world/ **というコマンド(vimgrepという機能です)を打ってみましょう.
カレントディレクトリ以下の全てのファイルにある,helloという文字列が再帰的に検索されます.
具体例 :vim /class\ GPAW/ ** in GPAW repogitory
vimコマンドを打ったら,最初にヒットした箇所が表示されます.
右下に(1 of 4)とあることから,4件中の1件目であることがわかります.
でも,一覧で見たいですよね.

そこで,:copenと打つと,以下のようにすべての検索一覧が表示されます.(QuickFixと呼ばれるウィンドウ)vimコマンドを打ったら即座に:copenを打つことをおすすめします.
選択後も,:cnで次の検索結果, :cpで前の検索結果に遷移することができます.

参考文献
[1] https://www-creators.com/archives/5272
[2] https://www-creators.com/archives/3102
Discussion