正規表現の種類
正規表現には、大雑把にいって 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} |