5.4 拡張正規表現の構文の概要
基本正規表現と拡張正規表現の違いは、「?」「+」、丸括弧、波括弧(「{}」)、および「|」という少数の文字の動作だけです。基本正規表現では特殊文字として働かせるためにこれらをエスケープする必要がありますが、拡張正規表現では文字そのものに一致させる場合にエスケープしなければなりません。「|」は例外です。「\|」はGNU拡張で、標準の基本正規表現にはこの機能がありません。
例:
abc?拡張正規表現では「abc\?」になります。文字列「abc?」そのものに一致します。
c\+拡張正規表現では「c+」になります。1個以上の「c」に一致します。
a\{3,\}拡張正規表現では「a{3,}」になります。3個以上の「a」に一致します。
\(abc\)\{2,3\}拡張正規表現では「(abc){2,3}」になります。「abcabc」または「abcabcabc」に一致します。
\(abc*\)\1拡張正規表現では「(abc*)\1」になります。拡張正規表現でも後方参照はエスケープする必要があります。
a\|b拡張正規表現では「a|b」になります。「a」または「b」に一致します。