Przełamywałem z metodą python re modules .search. cur to dane wejściowe z widżetu wpisu Tkinter. Ilekroć wpisuję "\" w widżet wpisu, zgłasza ten błąd. Nie jestem pewien, co to za błąd i jak sobie z nim poradzić. Każdy wgląd byłby bardzo doceniany.Python re "fikcyjny błąd ucieczki"
bież jest ciągiem
ys [0] jest ciągiem znaków
Fragment:
se = re.search(cur, tup[0], flags=re.IGNORECASE)
błąd:
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)
Czy można traktować \ jak zwykłą postać? Podobnie do metody r "string". – rectangletangle
@ Anteater7171: ukośnik odwrotny jest szczególny dla wyrażeń regularnych. Masz dwie możliwości: nie używaj wyrażeń regularnych lub modyfikuj ciąg znaków, aby usunąć specjalne znaczenie. W przypadku tego ostatniego, dodanie dodatkowego ukośnika odwrotnego powoduje lewę (tzn. Wzorzec "\" oznacza dosłowny ukośnik odwrotny). –
+1 Powinieneś był dodać swój ostatni komentarz do odpowiedzi. Aby rozwinąć komentarz, w kontekście np. re.search, co oznaczałoby zrobienie '' pattern = "foobar \\\\" ", to znaczy potrzebujesz 4 backslashes, więc argument pattern dla re.search kończy się na dwóch, co spowodowałoby prawne wyrażenie regularne. – ThomasH