ホームページ >バックエンド開発 >PHPチュートリアル >PHP - PCRE 正規表現パターン修飾子

PHP - PCRE 正規表現パターン修飾子

伊谢尔伦
伊谢尔伦オリジナル
2016-11-21 17:07:261423ブラウズ

現在利用可能な PCRE 修飾子は以下にリストされています。括弧内に記載されている名前は、PCRE の内部にあるこれらの修飾子の名前です。パターン修飾子のスペースと改行は無視され、他の文字はエラーの原因となります。

i (PCRE_CASELESS)

この修飾子が設定されている場合、パターン内の文字は大文字と小文字を区別せずに照合されます。

m (PCRE_MULTILINE)

デフォルトでは、PCRE はターゲット文字列が 1 行の文字で構成されていると見なし (ただし、実際には複数行が含まれる場合があります)、「行の始まり」メタ文字 (^) は文字列の先頭にのみ一致します。文字列の位置、および「行末」メタ文字 ($) は、文字列の末尾または最後の改行にのみ一致します (D 修飾子が設定されている場合を除く)。この動作は perl と同じです。この修飾子が設定されている場合、「行の先頭」と「行の末尾」はターゲット文字列内の改行文字の前後に一致し、さらにターゲット文字列の先頭と末尾にも一致します。これは、perl の /m 修飾子に相当します。ターゲット文字列に「n」文字がない場合、またはパターンに ^ または $ が現れない場合、この修飾子を設定しても効果はありません。

s (PCRE_DOTALL)

この修飾子が設定されている場合、パターン内のドット メタキャラクターは改行を含むすべての文字と一致します。この修飾子がないと、ピリオドは改行文字と一致しません。この修飾子は、perl の /s 修飾子に相当します。 [^a] などの否定文字クラスは、この修飾子の設定に関係なく、常に改行文字と一致します。

x (PCRE_EXTENDED)

この修飾子が設定されている場合、エスケープされていない、または文字クラスにないパターン内の空白データ文字は常に無視され、エスケープされていない文字クラス外の # 文字は常に無視されます。そして次の改行も無視されます。 この修飾子は Perl の /x 修飾子に相当し、コンパイルされたスキーマにコメントを含めることができます。 注: これはデータ文字のみを対象としています。 パターンの特殊文字シーケンスに空白文字を含めることはできません。たとえば、シーケンス (?() は条件付きサブグループ (注釈: この構文で定義された特殊文字シーケンスに空白文字が出現すると、コンパイル エラーが発生します。たとえば、(?( はエラーになります)。

e (PREG_REPLACE_EVAL)

この修飾子が設定されている場合、preg_replace() は、置換文字列の後方参照置換を実行した後、置換文字列を評価し、PHP コードとして実行します。 . 関数モード) を使用し、実際に置換に含まれる文字列として実行結果を使用します。単一引用符、二重引用符、バックスラッシュ () および NULL 文字は、後方参照置換時にバックスラッシュでエスケープされます。


置換パラメータが有効な PHP コード文字列で構成されていること。そうでない場合、PHP は preg_replace() が呼び出される行で解釈エラーを生成します。この修飾子は preg_replace() のみが使用し、他の PCRE 関数はこの修飾子を無視します

A (PCRE_ANCHORED)。

この修飾子が設定されている場合、パターンは強制的に「アンカーされた」パターンになります。これは、一致がターゲット文字列の先頭からのみ検索されるように制限されることを意味します。この効果は、適切なパターンを使用して構築することもできます。そして、これが Perl でこのパターンを実装する唯一の方法です

D (PCRE_DOLLAR_ENDONLY)

この修飾子が設定されている場合、この修飾子が設定されていない場合、パターン内のメタキャラクターのドル記号はターゲット文字列の末尾にのみ一致します。文字列が改行文字で終わる場合、ドル記号もその改行文字に一致します (ただし、その前の改行文字には一致しません)。この修飾子は、perl には修飾子に相当するものはありません。

S

パターンを複数回使用する必要がある場合、この修飾子が設定されている場合、現時点ではこの分析が実行されます。パターンの一致は、アンカーされていないパターン一致 (つまり、単一の固定開始文字なし) にのみ適用されます。

U (PCRE_UNGREEDY)

この修飾子は、量指定子の " を反転します。デフォルトで量指定子を非貪欲にします。量指定子の後に ? を付けると貪欲にできます。これは Perl と互換性がありません。モード内修飾子設定 (?U) を使用して設定することも、疑問符 ( など) で非貪欲としてマークすることもできます。 *?)。


注: 非貪欲モードでは、pcre.backtrack_limit を超える文字は一致できません。

X (PCRE_EXTRA)

文字は、PCRE および perl と互換性のない添付ファイルを開きます。パターン内のバックスラッシュの後に特別な意味のない文字が続くとエラーが発生します。これらの文字は下位互換性のために保存されています。 デフォルトでは、perl では、バックスラッシュの後に特別な意味を持たない文字がその文字の元のテキストとみなされます。 現在、このモディファイアによって制御される他の機能はありません。

J (PCRE_INFO_JCHANGED)

内部オプション設定 (?J) は、ローカルの PCRE_DUPNAMES オプションを変更します。重複した名前を持つサブグループを許可します (注釈: 内部オプションを通じてのみ設定できます。外部 /J 設定ではエラーが発生します。)

u (PCRE_UTF8)

この修飾子は、perl と互換性のない追加機能を有効にします。 パターン文字列は UTF-8 とみなされます。この修飾子は、Unix の場合は PHP 4.1.0 以降、Win32 の場合は PHP 4.2.3 以降で使用できます。 PHP 4.3.5 では、パターンの utf-8 有効性のチェックが開始されます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。