Maison >développement back-end >Tutoriel Python >Pourquoi mon Python `re.search()` ne trouve-t-il pas les limites des mots à l'aide de `\b` ?

Pourquoi mon Python `re.search()` ne trouve-t-il pas les limites des mots à l'aide de `\b` ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 04:13:171012parcourir

Why Doesn't My Python `re.search()` Find Word Boundaries Using `b`?

Bordure des mots (b) Prise en charge des expressions régulières

En Python, les expressions régulières peuvent être utilisées pour localiser et faire correspondre des modèles dans des chaînes. En explorant les expressions régulières, vous avez peut-être remarqué une suggestion visant à exploiter l'expression b pour correspondre aux limites des mots. Cependant, il existe des cas où cette approche peut donner des résultats inattendus.

Le problème

Considérez l'extrait Python suivant :

x = 'one two three'
y = re.search("\btwo\b", x)

Il était prévu que : ce code doit renvoyer un objet de correspondance si une correspondance est trouvée dans la chaîne. Cependant, étonnamment, il renvoie None. Cela soulève la question : le module Python re ne prend-il pas en charge l'utilisation de b pour faire correspondre les limites des mots ?

La solution

Le problème dans l'extrait donné réside dans le utilisation d'une chaîne régulière. Pour que les expressions régulières fonctionnent correctement, il est crucial d’utiliser des chaînes brutes. Les chaînes brutes sont indiquées en préfixant la chaîne avec un « r », comme indiqué ci-dessous :

x = 'one two three'
y = re.search(r"\btwo\b", x)

La modification de la chaîne en chaîne brute résout le problème et le code renvoie avec succès un objet de correspondance.

Approche alternative

Une approche alternative pour faire correspondre les limites des mots consiste à utiliser la fonction re.compile(). Cette fonction vous permet de définir un objet d'expression régulière qui peut être réutilisé pour plusieurs recherches, améliorant potentiellement l'efficacité.

word = 'two'
k = re.compile(r'\b%s\b' % word, re.I)
x = 'one two three'
y = k.search(x)

Dans ce cas, la variable k représente l'objet d'expression régulière compilé et y contient la correspondance objet. L'utilisation de re.compile() offre des avantages en termes de flexibilité et de performances, ce qui en fait un choix approprié pour les scénarios d'expressions régulières complexes.

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!

Déclaration:
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