J'ai été déconner avec la méthode python re modules .search. cur est l'entrée d'un widget d'entrée Tkinter. Chaque fois que j'entre un "\" dans le widget d'entrée, il renvoie cette erreur. Je ne suis pas sûr de savoir quelle est l'erreur ou comment y faire face. Toute opinion serait très appréciée.Python re "erreur d'échappement bidon"
cur est une chaîne
tup [0] est aussi une chaîne
Snippet:
se = re.search(cur, tup[0], flags=re.IGNORECASE)
L'erreur:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\Lib\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Python26\Suite\quidgets7.py", line 2874, in quick_links_results
self.quick_links_results_s()
File "C:\Python26\Suite\quidgets7.py", line 2893, in quick_links_results_s
se = re.search(cur, tup[0], flags=re.IGNORECASE)
File "C:\Python26\Lib\re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "C:\Python26\Lib\re.py", line 245, in _compile
raise error, v # invalid expression
error: bogus escape (end of line)
Est-il possible de traiter un \ comme un personnage ordinaire? Similaire à la méthode r "string". – rectangletangle
@ Anteater7171: barre oblique inverse est spécial pour les expressions régulières. Vous avez deux choix: n'utilisez pas d'expressions régulières ou modifiez la chaîne de sorte que la signification spéciale soit supprimée. Pour ce dernier, l'ajout d'un backslash supplémentaire fait l'affaire (ie: le motif '\\' signifie une barre oblique inverse littérale). –
+1 Vous auriez dû ajouter votre dernier commentaire à la réponse. Pour développer le commentaire, dans le contexte de p. re.search cela voudrait dire faire '' pattern = "foobar \\\\" '', c'est-à-dire que vous avez besoin de 4 backslash donc l'argument pattern pour re.search finit par en avoir deux, ce qui ferait une regexp légale. – ThomasH