Pourquoi la limite de mot ne fonctionne-t-elle pas?Limites de mots Python Regex ne fonctionnant pas comme prévu
lecture this site, je connais des œuvres limite de mot comme celui-ci:
Il y a trois positions différentes qui se qualifient comme des limites de mots:
- Avant le premier caractère de la chaîne, si le premier caractère est un caractère de mot.
- Après le dernier caractère de la chaîne, si le dernier caractère est un caractère de mot.
- Entre deux caractères dans la chaîne, où l'un est un caractère de mot et l'autre n'est pas un caractère de mot.
La chaîne a
ci-dessous semble correspondre à au moins l'une des positions énumérées ci-dessus.
a = 'Builders Club The Ohio State'
re.sub('\bThe\b', '', a, flags=re.IGNORECASE)
sortie. Il n'y a pas de changement dans le 'The'.
'Builders Club The Ohio State'
Pourquoi la limite de mot ne fonctionne-t-elle pas?
Lorsque je place des espaces avant et après le motif 'The', l'expression rationnelle semble fonctionner.
a = 'Builders Club The Ohio State'
re.sub(' The ', ' ', a, flags=re.IGNORECASE)
sortie:
'Builders Club Ohio State'
Elaborer: La barre oblique inverse est un caractère d'échappement dans les chaînes normales et donc '\ b' devient juste [une caractère de retour arrière] (https://docs.python.org/2.0/ref/strings.html). Donc, soit vous devez utiliser '\\ b' ou un littéral de chaîne brute. – Joey
Généralement, lorsque vous utilisez regex, il est conseillé d'utiliser une chaîne brute. – RevanProdigalKnight
ah ic. si j'utilise r "cela gâchera-t-il d'autres caractères, comme^et $? – user3314418