ここでは IEEE Std 1003.1 における ERE(Extended Regular Expressions) について説明する。
sed の正規表現における現代的な特殊文字は以下の通りである。
'('
- グループの開始。')'
- グループの終了。'|'
- グループの論理和。'+'
- 1個以上の繰り返しにマッチ'?'
- 0個か1個の繰り返しにマッチ'{'
- 繰り返し回数。"{m}", "{m,n}", "{m,}", "{,n}" はそれぞれ m 回, m〜n 回, m 回以上, n 回以下を表す。これらに伝統的な特殊文字が加わるが、グループはエスケープ不要となることに注意すること。
sed の文字集合には以下の文字クラス名が用意されている。ちなみに、右段の等価な文字集合では '\t'
等、GNU sed で可能なエスケープ文字による表記方法を用いており、POSIX sed ではエスケープ文字はサポートされないことに注意。
文字クラス | ISO646で等価な文字集合 | 備考 |
"[:alnum:]" | "[0-9A-Za-z]" | |
"[:alpha:]" | "[A-Za-z]" | |
"[:blank:]" | "[\t ]" | "C" ロカールではこれら「タブ」と「空白」のみ。 |
"[:cntrl:]" | "[^[:print:]]" | |
"[:digit:]" | "[0-9]" | |
"[:graph:]" | "[^ [:cntrl:]]" | ここで、文字 '\' が含まれない nawk 等の実装もあるので注意。 |
"[:lower:]" | "[a-z]" | |
"[:print:]" | "[ !-/0-9:-@A-Z[-`a-z{-~]" | ここで '/' を '\/' と書くべき nawk 等での書式もあるので注意。また、文字 '\' が含まれない nawk 等の実装もあるので注意。 |
"[:punct:]" | "[!-/:-@[-`{-~]" | ここで '/' を '\/' と書くべき nawk 等での書式もあるので注意。また、文字 '\' が含まれない nawk 等の実装もあるので注意。 |
"[:space:]" | "[\t-\r ]" | |
"[:upper:]" | "[A-Z]" | |
"[:xdigit:]" | "[0-9A-Fa-f]" |
ちなみに他に "[=ch=]"(照合記号), "[.a.]"(等価クラス)が定義されているが、それらが実装されているかは処理系による。