ホームページ  >  記事  >  バックエンド開発  >  PHP における正規表現の高度なアプリケーション

PHP における正規表現の高度なアプリケーション

PHPz
PHPzオリジナル
2023-06-22 18:27:111190ブラウズ

PHP 開発において、正規表現は、開発者が文字列の一致、置換、抽出、その他の操作を迅速に実行するのに役立つ非常に効率的なツールです。この記事では、後方参照、貪欲一致および遅延一致、ゼロ幅アサーションなどを含む、PHP の正規表現の高度なアプリケーションを紹介します。

1. 後方参照

後方参照は正規表現における非常に重要な概念であり、既に一致した部分式の内容を使用して次の文字列と一致します。 PHP では、正規表現の後方参照を使用する場合、特殊記号 "" を数字と組み合わせて使用​​する必要があります。

たとえば、次の正規表現は、連続する 2 つの同一の単語に一致します:

/^(w+)s$/

このうち、「 " は、前の単語に一致する最初の部分式への後方参照を表します。

2. 貪欲なマッチングと遅延マッチング

正規表現では、貪欲なマッチングはできるだけ多くの文字と一致することを意味し、遅延マッチングはできるだけ少ない文字と一致することを意味します。 PHP では、量指定子の後に「?」を追加することで、貪欲なマッチングと遅延マッチングを実装できます。デフォルトでは、貪欲なマッチングが使用されます。

たとえば、次の正規表現は HTML の a タグに一致します:

/<a.*?href="(.*?)".*?>(.*?)</a>/

このうち、.? は遅延一致を意味し、(.?) は href の抽出を意味します。 a タグ内の URL とテキストの内容。

3. ゼロ幅アサーション

ゼロ幅アサーションとは、一致する文字列の特定の位置の前または後ろが特定の条件を満たすかどうかを指しますが、一致した内容はそれに属しません。結果はゼロ幅と呼ばれます。一般的なゼロ幅アサーションには、正の先読み、負の先読み、正のルックバック、および負の先読みが含まれます。

(1) 前向き先読み

前方先読み一致コンテンツは、一致するコンテンツの直後に続く必要があります。

たとえば、次の正規表現は、数字の後に続く単語と一致します:

/w+(?=d)/

その中で、「(?=d)」は前方参照を意味し、数字を照合するものであり、数字を照合するものではありません。結果。

(2) 否定先読み

否定先読みで正常に照合されたコンテンツは、照合対象のコンテンツの直後であってはなりません。

たとえば、次の正規表現は、数字が後に続かない単語と一致します:

/w+(?!d)/

その中で、「(?!d)」は否定的な先読みを表し、次の内容と一致します。は数値ではないため、この内容を結果として使用しないでください。

(3) 前方ルックバック

前方ルックバックによって正常に照合されたコンテンツは、照合されるコンテンツの前にある必要があります。

たとえば、次の正規表現は、年が月日の前にある日付と一致します。

/(?<=d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[01]))d{4}/

Where, "(?<=d{2}(0[1- 9 ]|1[0-2])(0[1-9]|1-2|3[01]))" は、月と日の正規表現と一致することにより、月ではなく年と一致することにより、将来を見据えることを意味します。そしてその結果の日。

(4) ネガティブ ルックバック

ネガティブ ルックバックによって正常に照合されたコンテンツは、照合対象のコンテンツよりも前にあってはなりません。

たとえば、次の正規表現は、. で始まる行を除くすべての行に一致します:

/(?<!^).w+/

このうち、「(?

4. 結論

正規表現は、PHP 開発、特に文字列処理やデータ クリーニングなどにおいて大きな役割を果たしており、不可欠なツールです。この記事では、正規表現の高度な応用の基本的な内容を紹介しており、開発者は徐々に深く学び、PHP スキルをさらに向上させることができます。

以上がPHP における正規表現の高度なアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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