私は、これは動作するはずと思ったが、それはしません:Pythonで ' Q'と ' E'正規表現シンボルを使用するには?
import re
if re.match("\Qbla\E", "bla"):
print "works!"
それは動作しませんなぜ? Pythonで '\ Q'と '\ E'記号を使用できますか?どうやって?
私は、これは動作するはずと思ったが、それはしません:Pythonで ' Q'と ' E'正規表現シンボルを使用するには?
import re
if re.match("\Qbla\E", "bla"):
print "works!"
それは動作しませんなぜ? Pythonで '\ Q'と '\ E'記号を使用できますか?どうやって?
Pythonの正規表現エンジンはそれらをサポートしていません。 はのリストを参照してください。をサポートしています。しかし、同じ効果を得るにはre.match(re.escape("bla"), "bla")
と書くことができます。 re.escape
は、すべての特殊文字の前にバックスラッシュを挿入する関数です。
ちなみに"..."
ではなく、生の文字列r"..."
を使用してください。そうしないと、バックスラッシュが2回処理されます(文字列が解析された後、再度正規表現エンジンによって処理される)。 \b
の代わりに\\b
のようなものを書く必要があります。 r"..."
を使用すると、最初の処理が失敗するので、\b
と書くことができます。
残念ながら、Pythonは\Q
と\E
エスケープシーケンスをサポートしていません。あなたは自分ですべてをエスケープする必要があります。
-1:生の文字列とre.escapeがあります –
Pythonは\ Q ... \ Eをサポートしていません。 Ref:http://www.regular-expressions.info/refflavors.html
しかし、それはメタキャラクタのエスケープ文字列をサポートしていません。 Ref:http://docs.python.org/library/re.html#re.escape
ありがとうございました。私は、サポートされていない正規表現を挿入するときに例外が発生すると思います。ああ待って、これはPythonです... – wafwaf
あなたは大歓迎です。そして、ええ。 。 。私は人々がなぜPythonを愛しているのか分かりませんが、 。 。 – ruakh
@ruakhそれは正規表現ではない、私を信じてください。 :) – tchrist