Go to the first, previous, next, last section, table of contents.


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" にマッチしたものだからです。


Go to the first, previous, next, last section, table of contents.

検索式: