php — PCRE正規表現のアンカーとピリオド

伊谢尔伦
リリース: 2016-11-21 17:24:07
オリジナル
1107 人が閲覧しました

Anchor

文字クラスの外側、デフォルトのマッチングモードでは、^ は現在のマッチングポイントがターゲット文字列の先頭にあるというアサーションです。文字クラス内で、^ はその文字クラスに記述されている文字の否定を示します (詳細は以下を参照)。

^ はパターンの最初の文字である必要はありませんが、オプションのブランチ内にある場合は、ブランチの最初の文字にする必要があります。すべての代替分岐が ^ で始まる場合、つまり、パターンがターゲットの先頭のみの一致に制限されている場合、それは「強化された」パターンであると言われます。 (締結パターンを構築する他の方法もあります)

$ は、現在の一致点がターゲット文字列の末尾にあることを主張するために使用されます。または、ターゲット文字列が改行文字で終わる場合、現在の一致点は改行位置 (デフォルト) 。 $ はパターンの最後の文字である必要はありませんが、オプションの分岐にある場合は、その分岐の最後にある必要があります。 $ は文字クラスにおいて特別な意味を持ちません。

$ の意味は、コンパイルまたはマッチング中に PCRE_DOLLAR_ENDONLY を設定することで、文字列の末尾のみに一致するように変更できます。 これは、Z アサーションの動作には影響しません。 PCRE_MULTILINE オプションが設定されている場合、

^ 文字と $ 文字の意味が変わります。 この場合、各改行文字の前後の文字、およびターゲット文字列の先頭と末尾も一致します。たとえば、パターン /^abc$/ は、複数行モードではターゲット文字列「defnabc」と正常に一致しますが、通常は一致しません。したがって、オプションの分岐はすべて ^ で始まるため、単一行モードでは固定モードになりますが、複数行モードでは非固定モードになります。 PCRE_DOLLAR_ENDONLY オプションは、PCRE_MULTILINE が設定された後は無効になります。

注: A、Z、z などのエスケープ シーケンスは、どのモードでもターゲット文字列の先頭と末尾を一致させるために使用できます。 また、パターンのすべての分岐が A で始まる場合も、PCRE_MULTILINE が設定されているかどうかに関係なく、タイトになります。

ピリオド

文字クラスの外では、パターン内のピリオドは、非印刷文字を含むターゲット文字列内の任意の文字と一致しますが、(デフォルトでは)改行は除きます。 PCRE_DOTALL が設定されている場合、ピリオドは改行と一致します。 ピリオドの処理は、^ と $ の処理とは関係がありません。それらの唯一の関係は、両方に改行が含まれることです。 文字クラスではピリオドは意味を持ちません。

C はシングルバイトの一致に使用できます。つまり、UTF-8 モードではピリオドがマルチバイト文字と一致できることを意味します。


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!