Maison >développement back-end >Tutoriel Python >Pourquoi les limites des mots d'expression régulière (\b) se comportent-elles mal avec les caractères spéciaux ?
Lors de l'utilisation d'expressions régulières pour faire correspondre des mots, le modèle de limite b peut parfois produire des résultats inattendus, en particulier lorsque le mot contient des caractères spéciaux. caractères.
Considérez l'expression "test Sortesindex[persons]{Sortes} text." Faire correspondre la phrase complète à l'aide de b
Formellement, b correspond à la limite entre un caractère de mot (w) et un caractère autre qu'un mot. (W), ou le début/fin de la chaîne. Lorsque le modèle de limite de mot est immédiatement suivi d'un caractère spécial tel que [ ou }, le b nécessite uniquement un caractère de mot après le caractère spécial.
Pour résoudre ce problème, des limites de mots adaptatives ou des limites de mots sans ambiguïté peuvent être utilisées.
Les limites de mots adaptatives gèrent n'importe quelle combinaison de Caractères de mots et non-mots de chaque côté du motif :
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 sans ambiguïté ne nécessitent aucun caractère de mot de chaque côté du motif :
re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
Les limites de mots adaptatives sont plus polyvalentes mais autorisent les caractères non-mots de début et de fin. Les limites de mots sans ambiguïté sont plus strictes, garantissant l'absence de caractères de mots environnants.
Les modèles de recherche utilisés pour les limites de mots adaptatives et sans ambiguïté peuvent être personnalisés en fonction des exigences spécifiques de la tâche de correspondance. Par exemple, pour faire correspondre uniquement les non-lettres autour du motif, utilisez [^Wd_] au lieu de w.
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!