2011-03-22 5 views

Répondre

5

Vous devez échapper doublement à l'arrière-référence:

re.sub('(.+) \(\\1\)', '\\1', 'the (the)') 
--> the 

Ou utilisez le r prefix:

Lorsqu'un préfixe "r" ou "R" est présent, un caractère suivant une barre oblique inverse est inclus dans la chaîne sans changement, et toutes les barres obliques inverses sont laissées dans la chaîne.

re.sub(r'(.+) \(\1\)', r'\1', 'the (the)') 
--> the 
+0

+1 pour 'r', ce qui évite de trop encombrer le backslash. – eumiro

+0

@eumiro Yup, je devais juste trouver un lien vers la [documentation pertinente] (http://docs.python.org/library/re.html#raw-string-notation) :) – jensgram

1

Selon documentation: 'notation chaîne brute (r "texte") conserve des expressions régulières sain d'esprit.'

Questions connexes