私はPython re modules .searchメソッドを使いこなしています。 curは、Tkinterエントリウィジェットからの入力です。入力ウィジェットに「\」を入力すると、このエラーがスローされます。私は、エラーが何であるか、それをどのように処理するかをすべて確かめるわけではありません。どんな洞察も高く評価されるだろう。Python re "bogus escape error"
se = re.search(cur, tup[0], flags=re.IGNORECASE)
エラー:
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)
普通の文字のように\を扱うことは可能ですか? r "string"メソッドと同様です。 – rectangletangle
@Anteater7171:バックスラッシュは正規表現にとって特別です。 2つの選択肢があります。ユーザーの正規表現を使用しないか、特殊な意味が削除されるように文字列を変更します。後者の場合、追加のバックスラッシュを加えることがトリックです(つまり、パターン '¥¥'はリテラルのバックスラッシュを意味します)。 –
+1最後のコメントを回答に追加してください。コメントを拡大するには、たとえばre.searchは '' pattern = "foobar \\\\" ''を作ることを意味します。つまり、re.searchのパターン引数が2つになり、正当な正規表現になるように4つのバックスラッシュが必要です。 – ThomasH