Perl5 perlre - Perl の正規表現
[DESCRIPTION][正規表現][Version 8 正規表現][FAQやTIPS]
Version 8 正規表現
万が一、みなさんが「正規の」Version 8 正規表現ルーティンを知 らなかった場合のために、これまでに書いていないパターンマッチ の規則を示します。
ある 1 文字は、その文字がこの節かこれまでに示した「メタ文字」 でない場合には、その文字自身にマッチします。
通常はメタ文字 として働く文字も、前に "\" を付けることで、文字通りに解釈さ れるようにすることができます。
(たとえば、"\." は任意の 1 文字ではなく、"." という文字にマッチします。)
文字の並びは、 対象の文字列の中の同じ文字の並びにマッチしますから、blurfl というパターンは、対象となる文字列の "blurfl" にマッチします。
文字のリストを [] で囲って、そのリストのいずれかの文字にマッ チする、文字クラスを指定することができます。
"[" に続く最初 の文字が "^" であれば、その文字クラスは、リストに無い文字に マッチするようになります。
リストの中では、"-" が範囲を示す のに使われ、a-z は "a" から "z" までのすべての文字を表わしま す。
C で使われているのと非常によく似たメタ文字構文を使って、文字 を指定することができます。
"\n" が改行、"\t" がタブ、"\r" が復帰、"\f" が改ページといった具合です。
さらに一般的には、 nnn を 8 進数の数字として、\nnn は ASCII 値が nnn の文字にマ ッチします。
同様に、nn を 16 進数の数字として、\xnn は ASCII 値が nn の文字にマッチします。
\cx という式は、ASCII 文字 control-x にマッチします。
最後に、メタ文字 "." は (/s を使っているときを除いて) "\n" を除くどんな文字にもマッチし ます。
"|" で区切ることで、パターンの選択肢を示すことができますから、 fee|fie|foe は、対象の文字列の "fee" か "fie" か "foe" のい ずれかにマッチします (f(e|i|o)e と同じ)。
最初の選択肢には、 最後の区切文字 ("(" か "[" かパターンの始め) の後から最初の
"|" の前までが含まれ、最後の選択肢には、最後の "|" の後から 次のパターンの区切文字の前までが含まれます。
この事から、最 初と最後をはっきりさせるために、選択肢を括弧に入れることがよ く行なわれます。
(fee|fie|foe) というパターンは、 [fee|fie|foe] というパターンとは違うことに注意してください。 前者が対象文字列の "fee" か "fie" か "foe" にマッチするのに 対して、後者は [fee] か [fie] か [foe] のいずれかの文字クラ スにマッチするものにマッチします (つまり、文字クラス [feio] です)。
パターンではあとで参照するために、括弧で括ってサブパターンを 指定でき、そのパターンの中で n 番目のサブパターンを \n とい うメタ文字で参照することができます。
サブパターンは、左から 右に向かって、開き括弧に対して番号がつけられます。
後方参照 は、サブパターンが調べられる文字列中で、実際にマッチしたもの にマッチするのであって、そのサブパターン規則そのものにマッチ するのではありません。
ですから、([0|0x])\d*\s\1\d* という パターンは、"0x1234 0x4321" にマッチしますが、"0x1234 01234" にはマッチしません。
たとえ [0|0x] という規則が 2 番目の数 字の前の 0 にマッチすることができるとしても、サブパターン 1 は、"0x" にマッチしたものだからです。

出典:Perl manpages Last change: Release 5.0 Patchlevel 00 5