パターン修正子

パターン修正子 -- 正規表現パターンで使用可能な修飾子を得る

説明

現在使用可能なPCRE修飾子の一覧を以下に示します。 括弧の中の名前は、これらの修飾子に関するPCRE内部の名前です。

i (PCRE_CASELESS)

この修飾子が設定されている場合、パターンの中の文字は 大文字にも小文字にもマッチします。

m (PCRE_MULTILINE)

デフォルトで、PCREは検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 "行頭"メタ文字 (^) は文字列の最初にしかマッチしません。 一方、"行の終端"メタ文字 ($) は文字列の終わりまたは (D 修飾子が設定されていない場合、) 終端を表す改行記号の前のみにしかマッチしません。 この動作は Perl と同じです。

この修飾子が設定された場合、"行頭"および"行末"は subject文字列において、文字列の最初と最後と同じに、 各改行の直前と直後にそれぞれマッチします。 この動作は、Perl の /m 修飾子と同じです。 subject 文字列の中に "\n" 文字がない場合、 またはパターンに ^ または $ がない場合、 この修飾子を設定しても意味はありません。

s (PCRE_DOTALL)

この修飾子が設定された場合、パターン中のドットメタ文字は 改行を含む全ての文字にマッチします。 これを指定しない場合、改行は除かれます。 この修飾子は、Perl の /s 修飾子と等価です。 [^a] のような否定クラスは、 この修飾子の設定によらず、常に改行文字にマッチします。

x (PCRE_EXTENDED)

この修飾子が設定された場合、エスケープするか 文字クラスの内部にある場合を除き、 パターンの空白文字は完全に無視されます。 エスケープされていない文字クラスの外にある # と次の改行文字の間 の文字も無視されます。 この動作は、Perl の /x 修飾子と同じであり、複雑なパターンの内部に コメントを含むことが可能となります。 しかし、この修飾子は、データ文字にのみ適用されることに注意 して下さい。空白文字をパターンの特殊文字の並びの中、 例えば条件付サブパターン(?) の内部に置くことはできません。

e

この修飾子が設定されている場合、preg_replace() は、置換文字列において後方参照に関する通常の置換を行った後、 PHP コードとして評価し、検索文字列を置換するためにその結果を 使用します。

この修飾子を使用するのは、preg_replace()のみです。 他の PCRE 関数では無視されます。

A (PCRE_ANCHORED)

この修飾子が設定された場合、パターンは強制的に"anchored"となります。 この場合、検索される文字列("検索対象文字列")の先頭に のみマッチするように制限されます。 パターン自体の中に適当な指定を行うことでも 同様の効果を得ることが可能で、Perlではこの方法しか使用 できません。

D (PCRE_DOLLAR_ENDONLY)

この修飾子が設定されている場合、パターン内のメタ記号のドル は、検索対象文字列の終わりにのみマッチします。 この修飾子を指定しない場合、ドル記号は改行文字の直前の 文字(ただし、改行文字以外)にもマッチします。 この修飾子は、m が設定されている場合に 無視されます。 Perlには、この修飾子に等価なものはありません。

S

あるパターンを複数回使用する場合、マッチングにかかる時間を 高速化することを目的として、パターン解析により時間をかける 価値があります。 この修飾子を設定した場合、このようなより時間をかけた解析が 行われます。現在、パターン解析は、 最初の文字が単一の固定されていないアンカー付きでないパターンでのみ 有用です。

U (PCRE_UNGREEDY)

この修飾子は、デフォルトで貪欲でないが、"?" が後に付くと貪欲 になる量子化器の動作を反転します。この修飾子はPerl互換では有 りません。この修飾子の指定は、(?U) 修飾子のようにパターン内 でも行うことができます。

X (PCRE_EXTRA)

この修飾子は、Perl と互換性がない PCRE の付加的な機能をオンにします。 パターン内で後ろに文字が続くバックスラッシュで特別な意味がない ものは、将来的な拡張の際の互換性の維持のため、エラーになります。 デフォルトでは、Perl のように文字が後ろに続くバックスラッシュ で特に意味がないものは、リテラルとして処理されます。 この修飾子により制御される機能は、現在他にありません。

u (PCRE_UTF8)

この修正子は、Perl非互換なPCREの機能を有効にします。パターン 文字列は、UTF-8エンコードされた文字列として処理されます。こ の修正子は、UNIXではPHP 4.1.0以降、Win32ではPHP 4.2.3以降で 使用可能です。