============ 拡張正規表現 ============ [[!sed basics - ストリームエディタの基礎!sed-howto-0.html!]] [[!sed における基本正規表現!sed-howto-1.html!]] <<<< >>>> [2014/03/01新規] [2014/05/27更新] ここでは IEEE Std 1003.1 における ERE(Extended Regular Expressions) について説明する。 -------- 特殊文字 --------[[special_characters]] **sed** の正規表現における現代的な特殊文字は以下の通りである。 * '(' - グループの開始。 * ')' - グループの終了。 * '|' - グループの論理和。 * '+' - 1個以上の繰り返しにマッチ * '?' - 0個か1個の繰り返しにマッチ * '{' - 繰り返し回数。"{m}", "{m,n}", "{m,}", "{,n}" はそれぞれ m 回, m〜n 回, m 回以上, n 回以下を表す。 これらに伝統的な特殊文字が加わるが、//グループはエスケープ不要となる//ことに注意すること。 文字クラス ~~~~~~~~~~[[character class]] **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.]"(等価クラス)が定義されているが、それらが実装されているかは処理系による。 -------- 参考文献 --------[[bibliography]] . http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04[Extended Regular Expressions, IEEE Std 1003.1-2004]. //// Written by Taiji Yamada ////