x = "spam ?and eggs"
のような文字列があると私は"?and"
ことと一致するようにしようとしていると仮定します。現在、私はこのようにそれをやっている:
>>> print re.findall(re.escape('?and'), x)
['?and']
これはre.escape
の正しい使用事例ですか?それは他のタイプの正規表現構文を持っている可能性のある他の文字列リテラルでも使えますか?
私の使用例は、引数がpexpect.spawn.expect(pattern)
であり、入力パターンは正規表現にコンパイルされる文字列型にすることができます。場合によっては、私が探しているものは正規表現のように見えるかもしれませんが、実際には一致させたい文字列リテラルです。
ありがとうございました。なぜ自分でエスケープするのが単一のバックスラッシュを提供するのですが、 're.escape'を使用すると二重になりますか?この相違には何らかの重要性がありますか?実際には私が探している部分文字列が何であるか分からないので、私はre.escapeを使用します。 – wim
@wim:自分自身をエスケープするためには、自分がうんざりしていて、 'r '\?と' '(生の文字列リテラルを指定する)か'' \\?and'' '\?と'を含む文字列を意味します。これは疑問符と 'と'をマッチさせた正規表現を意味します)。 're.escape'は2つのバックスラッシュを表示します。これは' \?PythonのREPL pretty-printingはそれをPythonプログラムで使うことができる形式、 '' \\?and''に変換します。 – ruakh
@wim:間違いなく(より完全な)私の答えを更新しました。 – ruakh