Maison > développement back-end > Tutoriel Python > Comment faire correspondre de manière fiable des phrases avec des caractères spéciaux à l'aide du module « re » de Python ?

Comment faire correspondre de manière fiable des phrases avec des caractères spéciaux à l'aide du module « re » de Python ?

DDD
Libérer: 2024-12-08 02:56:10
original
633 Les gens l'ont consulté

How to Reliably Match Phrases with Special Characters Using Python's `re` Module?

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')
Copier après la connexion

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal