PHP(preg系)正規表現修飾子一覧

Pocket

i (PCRE_CASELESS)

この修飾子を設定すると、パターンの中の文字は大文字にも小文字にもマッチします。

m (PCRE_MULTILINE)

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

この修飾子を設定すると、「行頭」および「行末」メタ文字は対象文字列において、文字列の最初と最後に加えて、各改行の直前と直後にそれぞれマッチします。この動作は、Perlの /m 修飾子と同じです。対象文字列の中に"\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ではPHP4.1.0以降、Win32ではPHP4.2.3以降で使用可能です。また、PHP4.3.5以降では、パターンのUTF-8としての妥当性も確認されます。

[ 2012年10月16日 ]

« | »

コメントを残す


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

stabucky

写真

メタ情報