ホームページ  >  記事  >  バックエンド開発  >  php - PCRE 正規表現アサーション

php - PCRE 正規表現アサーション

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

アサーションは、現在の一致位置の前後の文字をテストするものであり、実際には文字を消費しません。単純なアサーション コードには、b、B、A、Z、z、^、$ などが含まれます。 より複雑なアサーションはサブグループにコーディングされます。 これには、先​​読みアサーション (現在位置から前方にテスト) と後読みアサーション (現在位置から逆方向にテスト) の 2 つのタイプがあります。

アサーション サブグループのマッチングは引き続き通常の方法で実行されますが、異なる点は、現在のマッチング ポイントが変更されないことです。先読みアサーションの肯定的なアサーション (この一致が true であることのアサート) は「(?=」で始まり、否定的なアサーションは「(?!」で始まります。たとえば、w+(?=;) はセミコロンが後に続く単語と一致しますが、一致します。結果にはセミコロンは含まれません。 foo(?!bar) は、直後に「bar」が続かないすべての「foo」の出現に一致します。同様のパターン (?!foo)bar を使用して、すべての出現を検索することはできません。 「bar」が前にないものは「bar」と一致します。次の 3 文字が「bar」の場合、アサーション (?!foo) は常に TRUE になるため、「bar」の出現が検索されます。

後読みアサーションの肯定的なアサーションは「(?

この場合、最初のアサーションは、(現在の一致点) の最初の 6 文字をチェックし、最初の 3 文字が数字であることを確認し、次に 2 番目のアサーションは、(現在の一致点) の最初の 3 文字が「」ではないことを確認します。 999」。

アサーションは、任意の複雑さでネストできます。 たとえば、(?<=(?

アサーション サブグループは非キャプチャ サブグループであり、量指定子を使用して変更できません。すべてのアサーションにキャプチャ サブグループが含まれている場合、パターン全体でサブグループをキャプチャするには、For を使用する必要があるためです。グループのカウントの目的では、それらはすべてカウントされます。ただし、部分文字列キャプチャは、否定的なアサーションには意味がないため、肯定的なアサーションにのみ使用できます。

アサーションを含め、保持できるサブグループの最大数は 200 です。

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