現在使用可能なPCRE修正子の一覧を以下に示します。 括弧の中の名前は、これらの修正子に関するPCRE内部の名前です。
- i (PCRE_CASELESS)
この修正子が設定されている場合、パターンの中の文字は 大文字にも小文字にもマッチします。
- m (PCRE_MULTILINE)
デフォルトで、PCRE は検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 "行頭"メタ文字 (^) は文字列の最初にしかマッチしません。 一方、"行の終端"メタ文字 ($) は文字列の終わりまたは (E 修正子が設定されていない場合、) 終端を表す改行記号の前のみにしかマッチしません。 この動作は Perl と同じです。
この修正子が設定された場合、"行頭"および"行末"は subject 文字列において、文字列の最初と最後と同じに、 各改行の直前と直後にそれぞれマッチします。 この動作は、Perl の /m 修正子と同じです。 subject 文字列の中に "\n" 文字がない場合、 またはパターンに ^ または $ がない場合、 この修正子を設定しても意味はありません。
- s (PCRE_DOTALL)
この修正子が設定された場合、パターン中のドットメタ文字は 改行を含む全ての文字にマッチします。 これを指定しない場合、改行は除かれます。 この修正子は、Perl の /s 修正子と等価です。 [^a] のような否定クラスは、 この修正子の設定によらず、常に改行文字にマッチします。
- x (PCRE_EXTENDED)
この修正子が設定された場合、エスケープするか 文字クラスの内部にある場合を除き、 パターンの空白文字は完全に無視されます。 エスケープされていない文字クラスの外にある # と次の改行文字の間 の文字も無視されます。 この動作は、Perl の /x 修正子と同じであり、複雑なパターンの内部に コメントを含むことが可能となります。 しかし、この修正子は、データ文字にのみ適用されることに注意 して下さい。空白文字をパターンの特殊文字の並びの中、 例えば条件付サブパターン(?) の内部、 に置くことはできません。
- e
この修正子が設定されている場合、preg_replace は、置換文字列において \\ 参照に関する通常の置換を行った後、 PHP コードとして評価し、検索文字列を置換するためにその結果を 使用します。
この修正子を使用するのは、preg_replace のみです。 他の PCRE 関数では無視されます。
注意: この修正子は PHP 4.0 で追加されました。
- A (PCRE_ANCHORED)
この修正子が設定された場合、パターンは強制的に "anchored" となります。 この場合、検索される文字列("検索対象文字列")の先頭に のみマッチするように制限されます。 パターン自体の中に適当な指定を行うことでも 同様の効果を得ることが可能で、Perl ではこの方法しか使用 できません。
- E (PCRE_DOLLAR_ENDONLY)
この修正子が設定されている場合、パターン内のメタ記号のドル は、検索対象文字列の終わりにのみマッチします。 この修正子を指定しない場合、ドル記号は改行文字の直前の 文字(ただし、改行文字以外)にもマッチします。 この修正子は、m が設定されている場合に 無視されます。 Perl には、この修正子に等価なものはありません。
- S
あるパターンを複数回使用する場合、マッチングにかかる時間を 高速化することを目的として、パターン解析により時間をかける 価値があります。 この修正子を設定した場合、このようなより時間をかけた解析が 行われます。現在、パターン解析は、 最初の文字が単一の固定されていないアンカー付きでないパターンでのみ 有用です。
- U (PCRE_UNGREEDY)
この修正子は、 デフォルトで貪欲でないが、"?" が後に付くと貪欲になる 量子化器の貪欲さを反転します。 この修正子は Perl 互換では有りません。 この修正子の指定は、(?U) 修正子のようにもパターン内でも行うことが できます。
- X (PCRE_EXTRA)
この修正子は、Perl と互換性がない PCRE の付加的な機能をオンにします。 パターン内で後ろに文字が続くバックスラッシュで特別な意味がない ものは、将来的な拡張の際の互換性の維持のため、エラーになります。 デフォルトでは、Perl のように文字が後ろに続くバックスラッシュ で特に意味がないものは、リテラルとして処理されます。 この修正子より制御される機能は、現在他にありません。