Gestion des limites de mots pour les modèles avec des caractères spéciaux
Le module re de Python fournit le modèle b pour faire correspondre les limites de mots. Cependant, lorsqu'il est utilisé avec des modèles contenant des caractères spéciaux comme {}, le comportement peut devenir inattendu.
Considérez le modèle Sortesindex[persons]{Sortes}. En utilisant b pour garantir qu'il ne correspond qu'aux instances de mots entiers, nous nous attendrions à un résultat positif dans "test Sortesindex[persons]{Sortes} text", mais il échoue.
Examen du comportement des limites des mots
La documentation explique b comme des limites correspondantes entre les caractères mots et non-mots, ou entre le début/la fin d'une chaîne et un mot. caractère.
Dans notre modèle, b correspond à la fin du mot, mais pas explicitement au début. La présence de } comme caractère spécial crée une ambiguïté pour b, entraînant un comportement inattendu.
Utilisation des limites de mots adaptatives
Une solution consiste à utiliser des limites de mots adaptatives, qui considèrent le contexte autour du modèle. Ils vérifient les caractères autres que des mots de chaque côté ou les caractères de mots de chaque côté, garantissant ainsi une correspondance précise. Cela peut être représenté par :
(?:(?!w)|b(?=w)){}(?:(?<=w)b|(?
où :
Cela garantit une correspondance précise pour Sortesindex[persons]{Sortes} dans la chaîne de test, à l'exclusion des correspondances comme Sortes.
Options alternatives
Choisir la bonne approche
Les limites adaptatives des mots sont plus indulgentes, permettant la correspondance avec des caractères non-mots autour le motif. Les limites de mots sans ambiguïté sont plus restrictives et ne nécessitent aucun caractère de mot à chaque extrémité. Choisissez l'approche qui correspond le mieux à vos exigences spécifiques en matière de correspondance.
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!