在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''。 –