Pythonで正規表現を作成するときに特殊文字の意味を無視する方法はありますか?言い換えれば、文字列を「そのまま」とします。Pythonで正規表現を作成するときに特殊文字を無視する
Telnet
オブジェクトのexpect
メソッドを内部的に使用するコードを記述しています。このコードは正規表現のみを受け入れます。したがって、答えは明らかな "正規表現の代わりに==
を使用"することはできません。
私は最初のものは、文字列を認識しない、2つ目がないのでそれは、作品
import re
SPECIAL_CHARACTERS = "\\.^$*+?{}[]|():" # backslash must be placed first
def str_to_re(s):
result = s
for c in SPECIAL_CHARACTERS:
result = result.replace(c,'\\'+c)
return re.compile(result)
TEST = "Bob (laughing). Do you know 1/2 equals 2/4 [reference]?"
re_bad = re.compile(TEST)
re_good = str_to_re(TEST)
print re_bad.match(TEST)
print re_good.match(TEST)
これを試してみました。私はPythonのドキュメントのオプションを見て、簡単な方法を見つけることができませんでした。または、私の解決策がカバーしないケースがありますか(私はSPECIAL_CHARACTERS
をビルドするためにPythonのドキュメントを使用しました)?
P.S.この問題は、他のライブラリにも当てはまります。これは、この問題を解決する方法expect_exact
を提供するので、pexpect
ライブラリには適用されません。しかし、誰かが文字列(そのまま)と正規表現の組み合わせを指定したいと思うかもしれません。
'結果= result.replaceを(使用し、生の文字列を使用して得ましたc、 '\\\\' + c) ' –
re.escapeは機能しませんか? – e4c5
'raw_message = r '\ try \ this \ raw \ message''のように、引用符の前に' r'を追加してください。 –