Comprendre la fonctionnalité de limite de mots dans les expressions régulières PHP
Lorsque vous essayez d'implémenter des limites de mots pour faire correspondre des mots spécifiques dans le contenu à l'aide d'expressions régulières en PHP, il est essentiel de comprendre leur comportement précis. Cependant, lors des tests, des résultats inattendus peuvent survenir.
Dans l'exemple fourni, l'expression "^|\b@nimal/i" a été utilisée pour correspondre au mot "cat" uniquement s'il apparaît au début de un autre mot. Cependant, les résultats étaient contre-intuitifs, conduisant à une confusion sur la façon dont PHP détermine les limites des mots.
La clé pour comprendre la correspondance des limites des mots réside dans la nature de \b. Cet indicateur correspond au point de transition entre un \w (caractère de mot) et un \W (caractère autre qu'un mot). Pour qu'une correspondance réussisse, il doit exister un caractère de mot avant le caractère qui vous intéresse.
Considérez le premier exemple :
preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
L'expression correspond à une limite de mot entre "g" et "@", car "g" est un caractère de mot et "@" n'est pas un mot caractère.
Dans le deuxième exemple :
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
Aucune correspondance ne se produit car il n'y a aucun caractère de mot avant "@". Les deux "!" et "@" ne sont pas des caractères de mot.
Pour résoudre le problème, commencez par un caractère de mot avant le caractère que vous souhaitez faire correspondre. Cela garantit la présence d'une limite de mot valide.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3