php-PCRE 正規表現逆参照の詳細な紹介

伊谢尔伦
リリース: 2023-03-01 09:16:02
オリジナル
1467 人が閲覧しました

文字クラスの外で、バックスラッシュの後に0より大きい数字(場合によっては数字)が続くものは、パターン内に以前に出現したキャプチャグループへの後方参照です。

バックスラッシュの直後の数字が 10 未満の場合、それは常に後方参照であり、パターン内にキャプチャ グループがそれほど多くない場合はエラーが発生します。 言い換えれば、引用された括弧の数は、10 未満の引用された括弧の数よりも少なくすることはできません。 数値がどのように処理されるかについては、上記の「バックスラッシュ」セクションを参照してください。

後方参照は、サブグループ パターンの内容と一致するのではなく、ターゲット

string 内の参照されたキャプチャ グループによって実際にキャプチャされたコンテンツと直接一致します。したがって、パターン (sens|respons)e と 1ibility は、「センスと感性」および「応答と責任」には一致しますが、「センスと責任」には一致しません。 逆参照時に大文字と小文字を区別した一致が強制される場合、たとえば、((?i)rah)s+1 は「rah rah」および「RAH RAH」に一致しますが、元のキャプチャ サブ グループであっても「RAH rah」には一致しません。それ自体は大文字と小文字を区別しません。 注釈: ここで考慮する必要があるのは、後方参照によって期待されるコンテンツは、参照されたキャプチャ サブグループによって取得されるコンテンツとまったく同じであるということです (もちろん、後方参照の前に内部オプションを設定することで区別できないようにすることができます)。大文字と小文字を変更するか、パターン修飾子を追加することによっても実現できます。ただし、このアプローチは実際にその動作を外部から制御します。) 同じサブグループへの後方参照が複数存在する場合があります。 サブグループは実際には特定の一致に使用されない場合があり、その場合、サブグループへの後方参照は失敗します。 たとえば、パターン (a|(bc))2 は、「a」で始まるが「bc」ではない文字列と一致する場合、常に失敗します。 後方参照は最大 99 個存在する可能性があるため、バックスラッシュの直後にある任意の数値が後方参照の数になる可能性があります。 パターンの後に後方参照の直後に数字が続く場合は、後方参照構文を終了するために何らかの区切り文字を使用する必要があります。 PCRE_EXTENDED オプションが設定されている場合は、スペースを使用してこれを行うことができます。他の場合には、空の コメント を使用できます。

後方参照が参照するサブグループ内にある場合、そのマッチングは失敗します。たとえば、(a1) は一致しません。ただし、この参照は内部サブパターンの繰り返しに使用できます。たとえば、パターン (a|b1)+ は、「a」のほか、「aba」、「ababba」などで構成される任意の数の文字列と一致します。 (注釈: サブグループ内にはオプションのパスがあるため、オプションのパス パスはマッチングを完了することができ、マッチングが完了した後、後方参照によってコンテンツを参照できます。サブパターンの各反復中に、後方参照は、前の反復中にサブグループが一致した文字列と一致します。この作業を行うには、パターンは、最初の反復で後方参照が一致する必要がないことを保証できなければならないという条件を満たしている必要があります。 この条件は、上記の例のようにオプションのパスを使用するか、最小値 0 の

量指定子を使用して後方参照を変更することで実装できます。

PHP 5.2.2 以降、 g エスケープ シーケンスは、サブパターンへの絶対参照と相対参照の両方に使用できます。 このエスケープ シーケンスの後には、符号なしの数値または負の数値を続ける必要があります。必要に応じて括弧で囲んでください。 シーケンス 1、g1、および g{1} の間には同義関係があります。 この使用法により、後方参照を記述するためにバックスラッシュの後に数値を使用することによって生じる曖昧さが解消されます。 このエスケープ シーケンスは、後方参照と 8 進数の数字文字を区別するのに役立ち、また、後方参照の後に g{2}1 などのソース一致数字が続くことを明確にします。

g エスケープ シーケンスの後に負の数値が続く場合は、相対後方参照を表します。たとえば、(foo)(bar)g{-1} は文字列「foobarbar」に一致し、(foo)(bar)g{2} は「foobarfoo」に一致します。 これは、特定のサブグループに対する以前の参照のサブグループ シーケンス番号を追跡するためのロング モードのオプションとして使用されます。

後方参照では、(?P=name) などのサブグループ名を使用した構文記述もサポートされており、PHP 5.2.2 以降では、k または k'name' を使用できます。 さらに、k{name} と g{name} のサポートが PHP 5.2.4 で追加されました。

上記は php-PCRE 正規表現バックリファレンスの詳細な紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

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