ホームページ バックエンド開発 PHPチュートリアル php-PCRE 正規表現逆参照の詳細な紹介

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

Mar 30, 2017 pm 03:03 PM
php

文字クラスの外で、バックスラッシュの後に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) に注目してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles