PHP 正規表現の単語境界機能を理解する
PHP で正規表現を使用して、コンテンツ内の特定の単語を照合するための単語境界を実装しようとすると、彼らの行動を正確に理解することが重要です。ただし、テスト中に予期しない結果が生じる可能性があります。
この例では、式 "^|\b@nimal/i" は、単語 "cat" の先頭に出現する場合にのみ一致するように使用されています。別の言葉。ただし、結果は直観に反するもので、PHP が単語境界を決定する方法について混乱を引き起こしました。
単語境界の一致を理解する鍵は、\b の性質にあります。このインジケーターは、\w (単語文字) と \W (非単語文字) の間の遷移点で一致します。一致が成功するには、対象の文字の前に単語文字が存在する必要があります。
最初の例を考えてみましょう:
preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
「g」は単語文字、「@」は単語文字であるため、この式は、「g」と「@」の間の単語境界と一致します。単語以外の文字。
2 番目の例:
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
「@」の前に単語文字がないため、一致は起こりません。両方 "!"
この問題を修正するには、一致させたい文字の前に単語文字を置きます。これにより、有効な単語境界が存在することが保証されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3