Maison  >  Article  >  développement back-end  >  Comment utiliser correctement les limites des mots (\\b) dans les expressions régulières PHP pour une correspondance précise des chaînes ?

Comment utiliser correctement les limites des mots (\\b) dans les expressions régulières PHP pour une correspondance précise des chaînes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-21 07:23:301074parcourir

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

Clarifier les limites des mots d'expression régulière en PHP

Lorsque vous travaillez avec des expressions régulières en PHP, comprendre les limites des mots (b) est crucial pour une chaîne précise correspondant. Ce délimiteur marque la transition entre les caractères de mot (w) et les caractères non-mots (W).

Dans l'exemple fourni, l'intention est de faire correspondre des mots spécifiques, y compris le mot « chat », tout en se demandant s'il commence ou termine un mot. Cependant, les résultats attendus ne sont pas au rendez-vous.

Décomposons la problématique :

Première expression :

preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
  1. Le group (^|b) correspond soit au début de la chaîne, soit à la limite d'un mot.
  2. Dans la chaîne donnée, "quelque chose@nimal", il n'y a pas de caractère de mot avant "@", donc le groupe correspond à un chaîne vide.
  3. Par conséquent, @nimal correspond au "@nimal" suivant, qui inclut le symbole "@".

Deuxième expression :

preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
  1. Encore une fois, le groupe (^|b) correspond au début de la chaîne ou à une limite de mot.
  2. Dans ce cas, il y a un caractère de mot "g" avant "!", donc le groupe correspond à une chaîne non vide.
  3. Cependant, entre "!" et "@" il n'y a pas de caractère de mot, donc il n'y a pas de limite de mot.
  4. En conséquence, le groupe ne parvient pas à correspondre et aucune correspondance n'est trouvée.

Solution :

Pour résoudre le problème, il est essentiel de comprendre que les limites des mots ne correspondent que lorsqu'il y a une transition d'un caractère verbal à un caractère non verbal. Dans le premier cas, une limite de mot est créée avant "@", tandis que dans le second cas, aucune limite de ce type n'existe entre "!" et "@."

Par conséquent, l'expression correcte pour faire correspondre les mots qui commencent et se terminent par des caractères de mot est :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn