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` ?
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!