括弧で囲んでグループ化 (pattern) または \(pattern\)
繰り返しなどの量指定子(*とか+など)を使う際に1つの文字に対してではなく、『 ( ) 』を使う事により、単語などの繰り返しを表現する事ができる。
例えば、『 (yeah)+ 』という正規表現であれば
yeah
yeahyeah
yeahyeahyeah ・・・・
という文字列を検知する事ができます。
後方参照
『 ( ) 』で括ることによりキャプチャ(記憶)する事ができます。
キャプチャ無し(記憶しない)でクループ化する事もできます。
簡単に言うと、プログラミングの配列のような使い方ができる。
例えば、
info 正常終了
warning 警告発報
error 異常終了(E101)
というようなログがあったとする。(説明の為、超単純に記載)
このログの「error」と「warning」時の内容のみを出力したいとなった場合
グループ化を使った正規表現を使って「 (warning|error)(.+) 」こんな検索?の仕方をする事で
「\1」には1つめの括弧で括ったグループ化の中で検索した結果である「warning」や「error」が代入され
「\2」には「警告発報」や「異常終了(E101)」が代入されることになるので、それを出力するには
echo \2 ってやれば内容だけが出力される。
障害発生時にめんどくさいログを調査する事になった。という場合
元のログをピックアップしてからエクセルを使ってごちゃごちゃやる前に、シェルでこんな正規表現をうまく使ってfor文などで回したりする事で、あらかじめ調査が楽になるようなアウトプットファイルができるかもしれないよね・・・