ホームページ  >  記事  >  バックエンド開発  >  正確な文字列照合のために PHP 正規表現で単語境界 (\\b) を正しく使用する方法

正確な文字列照合のために PHP 正規表現で単語境界 (\\b) を正しく使用する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-21 07:23:30961ブラウズ

How to Correctly Use Word Boundaries (\b) in PHP Regular Expressions for Precise String Matching?

PHP での正規表現の単語境界の明確化

PHP で正規表現を使用する場合、正確な文字列を得るには単語境界 (b) を理解することが重要ですマッチング。この区切り文字は、単語文字 (w) と単語以外の文字 (W) の間の移行をマークします。

この例では、目的は、単語「cat」を含む特定の単語と一致するかどうかを考慮することです。単語の始まりまたは終わり。しかし、期待された結果は得られません。

問題を詳しく見てみましょう:

最初の式:

preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
  1. group (^|b) は、文字列の先頭または単語境界のいずれかに一致します。
  2. 指定された文字列「something@nimal」では、「@」の前に単語文字がないため、グループは文字列の先頭に一致します。空の文字列。
  3. 結果として、@nimal は、「@」記号を含む次の「@nimal」と照合されます。

2 番目の式:

preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
  1. 再び、グループ (^|b) は文字列の先頭または単語境界と一致します。
  2. この場合、前に単語文字「g」があります。 "!" なので、グループは空ではない文字列と一致します。
  3. ただし、"!" の間は「@」と「@」には単語文字がないため、単語の境界はありません。
  4. その結果、グループの一致に失敗し、一致するものが見つかりません。

解決策:

この問題に対処するには、単語の境界は単語文字から非単語文字への遷移がある場合にのみ一致することを理解することが重要です。最初のケースでは、「@」の前に単語の境界が作成されますが、2 番目のケースでは、「!」の間にそのような境界は存在しません。および "@."

したがって、単語文字で始まり単語文字で終わる単語と一致する正しい表現は次のとおりです。

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

以上が正確な文字列照合のために PHP 正規表現で単語境界 (\\b) を正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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