ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現で単語の境界を正しく使用するにはどうすればよいですか?

PHP 正規表現で単語の境界を正しく使用するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-21 07:24:03482ブラウズ

How to Correctly Use Word Boundaries in PHP Regular Expressions?

PHP 正規表現の単語境界機能を理解する

PHP で正規表現を使用してコンテンツ内の特定の単語を照合するための単語境界を実装しようとする場合、彼らの行動を正確に理解することが不可欠です。ただし、テスト中に予期しない結果が生じる可能性があります。

この例では、式 "^|b@nimal/i" は、単語 "cat" が別の単語の先頭に出現する場合にのみ一致するように使用されています。言葉。しかし、結果は直観に反するもので、PHP が単語境界を決定する方法について混乱を引き起こしました。

単語境界マッチングを理解する鍵は、b の性質にあります。このインジケーターは、w (単語文字) と W (非単語文字) の間の遷移点で一致します。一致が成功するには、対象の文字の前に単語文字が存在する必要があります。

最初の例を考えてみましょう:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match);

式は、「g」と「g」の間の単語境界と一致します。 「@」 (「g」は単語文字、「@」は単語以外の文字です。

2 番目の例:

preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);

単語がないため、一致は発生しません) 「@」の前の文字。両方 "!"と "@" は単語文字ではありません。

問題を修正するには、一致させたい文字の前に単語文字を入力して始めます。これにより、有効な単語境界が存在することが保証されます。

以上がPHP 正規表現で単語の境界を正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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