正規表現 メタキャラクタ 検索・置換 前編
バイオインフォ道場、くまぞうです。
sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。前編です。(後編を読む)
正規表現とは
正規表現とは、文字列集合を特殊文字(メタキャラクタ)で表現する方法です。メタキャラクタには、$(ダラー)や^(サーカムフレックス)、[](ブラケット)などが良く使われます。例えば、[0-9]は0〜9の数字のどれか、[Ww]ordはWordもしくはwordです。使うプログラムによって、正規表現の詳細は異なる場合がります。共通して使える基本的なものを中心に覚えると良いと思います。
基本的な正規表現メタキャラクタ1
任意の1文字にマッチ
- 書式
.(ピリオド) - 例
wo.d(word, wood など) - 使い方
$ cat bbb.txt word wood sky $ grep -e "wo.d" bbb.txt word wood
直前の1文字を任意回数繰り返し(0回を含む)にマッチ
- 書式
*(アスタリスク) - 例
w*(w, www, wwwwwwwwww, worldなど) - 使い方
$ cat bbb.txt word wood sky $ grep -e "wo.d" bbb.txt word wood $ grep -e "sk" bbb.txt sky
どれか1個にマッチ
ブラケットに囲まれた文字のうち、どれか1個にマッチする。1文字目に、サーカムフレックス(^)を置くと意味が反対になる。ハイフン(-)を使うと文字の範囲を意味する。
- 書式
[…](ブラケットで文字を囲む) - 例
[123](1か2か3)、[1-3](1〜3)、[^123](1-3以外の1つの数字) - 使い方
$ echo "Word" | sed 's/[^Ww]/!/g' W!!!