DOSEIの日記

技術メモ+日常ログ

正規表現の種類

正規表現には、大雑把にいって 2 通りの流派がある。 The Open Group では Basic Regular Expressions (BRE) と Extended Regular Expressions (ERE) に分けている。

BRE ERE
概要 特殊なものはバックスラッシュで表現 特殊なものはバックスラッシュで無効化
特殊文字 (エスケープで通常の文字になる) ., [, \, * (先頭では通常の文字扱い) ., [, \, * (先頭だと未定義), ? (先頭だと未定義), + (先頭だと未定義), (, ), {, }, | (先頭だと未定義)
部分により特殊文字 (どこにあってもエスケープ可能) ^ (先頭のみ), $ (末尾のみ) ^ (先頭のみ), $ (末尾のみ)
バックスラッシュ付き特殊文字 \(, \), \{, \}, \1, \2, \3, \4, \5, \6, \7, \8, \9, (\|) なし
通常の文字のエスケープ 未定義 未定義
使われているところ Vim, sed (デフォルト), grep sed -r, egrep (grep -E)

BRE ERE
どちらか abc\|def abc|def
a, b, c のどれか1つ [abc] [abc]
グルーピング \(abc\) (abc)
一つ以上 (ab)(ab)* (ab)+ でも可
n a\{n\} a{n}