在python中創建正則表達式時,有沒有辦法忽略特殊字符的含義?換句話說,採取字符串「原樣」。在python中創建正則表達式時忽略特殊字符
我正在編寫內部使用expect
方法的Telnet
對象,該對象只接受正則表達式。因此,答案不能是明顯的「使用==
而不是正則表達式」。
我想這
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文檔中的選項,但無法找到更簡單的方法。或者有沒有我的解決方案沒有涵蓋的任何情況(我用python文檔構建SPECIAL_CHARACTERS
)?
P.S.這個問題可以適用於其他圖書館。它不適用於pexpect
庫,因爲它提供瞭解決此問題的expect_exact
方法。但是,有人可能想要指定混合字符串(按原樣)和正則表達式。
'結果= result.replace( c,'\\\\'+ c)' –
re.escape不起作用? – e4c5
在引號前加'r',如'raw_message = r'\ try \ this \ raw \ message''。 –