Résultats inattendus avec les limites des mots et les caractères spéciaux
Lorsqu'ils tentent de faire correspondre la présence d'une phrase avec des caractères normaux et spéciaux, les utilisateurs peuvent rencontrer des résultats inattendus. À l'aide du module re de Python, un modèle peut être échappé et recherché dans une chaîne donnée. Bien que b corresponde généralement aux limites des mots, des difficultés surviennent lorsque le modèle contient des caractères spéciaux.
Considérez l'exemple d'expression "Sortesindex[persons]{Sortes}". Lors d'une recherche dans la chaîne "test Sortesindex[persons]{Sortes} text" à l'aide de re.escape('Sortes\index[persons]{Sortes}') et b, aucune correspondance n'est trouvée. Cela se produit parce que b nécessite qu'un caractère de mot suive la limite, ce qui n'est pas le cas lorsque des caractères spéciaux sont présents.
Pour remédier à cela, une correspondance explicite de caractères autres que des mots ou une condition de fin de chaîne peut être utilisé. Remplacer b par (W|$) permet à la recherche de réussir.
Une approche plus complète consiste à utiliser des limites de mots adaptatives :
re.search(r'(?:(?!\w)|\b(?=\w)){}(?:(?<=\w)\b|(?<!\w))'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Les limites de mots adaptatives garantissent la présence de limites de mots sans nécessitant des caractères de mots adjacents. Ils fonctionnent en excluant les caractères autres que des mots de chaque côté du motif.
Alternativement, des limites de mots sans ambiguïté basées sur des recherches négatives peuvent être utilisées :
re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Des recherches négatives garantissent l'absence de mot. caractères des deux côtés du motif.
En conclusion, lors de la correspondance de phrases avec des caractères réguliers et spéciaux, une correspondance explicite de caractères autres que des mots, adaptative des limites de mots ou des limites de mots sans ambiguïté doivent être utilisées pour garantir les résultats souhaités.
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!