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