Maison > développement back-end > Tutoriel Python > Pourquoi ma limite de mots Python Regex \b échoue-t-elle et comment puis-je y remédier ?

Pourquoi ma limite de mots Python Regex \b échoue-t-elle et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-19 10:13:14
original
344 Les gens l'ont consulté

Why Does My Python Regex b Word Boundary Fail, and How Can I Fix It?

Bordure des mots (b) dans les expressions régulières Python avec le module re

Lorsque vous travaillez avec des expressions régulières en Python à l'aide du module re, vous pouvez rencontrez une confusion concernant le comportement de l’expression de limite de mot (b). Cette réponse résout un problème courant auquel les utilisateurs sont confrontés lorsqu'ils tentent de faire correspondre les limites des mots.

L'expression b, généralement utilisée pour identifier la limite entre un mot et tout autre caractère, semble échouer dans certains scénarios. Prenons l'exemple suivant :

>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)
Copier après la connexion

De façon attendue, un objet match devrait être renvoyé, mais à la place, il s'agit de None. Ce résultat déroutant peut amener à se demander si b est pris en charge en Python.

Cependant, le problème ne réside pas dans l'expression b elle-même mais dans la chaîne avec laquelle vous travaillez. En Python, les chaînes contenant des barres obliques inverses nécessitent un traitement spécial en tant que séquences d'échappement. Pour éviter cela, vous devez utiliser des chaînes brutes.

>>> x = 'one two three'
>>> y = re.search(r"\btwo\b", x)
>>> y
<_sre.SRE_Match object at 0x100418a58>
Copier après la connexion

En ajoutant le préfixe "r", vous créez une chaîne brute où les barres obliques inverses sont traitées comme des caractères littéraux, y compris l'expression b. Cela permet à Python de faire correspondre correctement la limite du mot.

Vous pouvez également utiliser la fonction re.compile() pour créer un modèle d'expression régulière qui inclut le mot que vous souhaitez faire correspondre :

word = 'two'
k = re.compile(r'\b%s\b' % word, re.I)
Copier après la connexion

Cette approche aboutit à un modèle compilé qui peut être appliqué efficacement à plusieurs chaînes ou utilisé dans des opérations d'expression régulière complexes.

En résumé, n'oubliez pas d'utiliser des chaînes brutes ou le Fonction re.compile() pour une gestion correcte des expressions de limites de mots dans le module re de Python.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal