我只是想知道是否有办法忽略模式字符串中的所有特殊字符,而不是在所有字符串中添加“\”。
例如,我有很长的模式列表:
patterns = ["11 (1)", "22 (2)", ... ]
我想使用for循环搜索文本中的模式:
for p in patterns:
if re.search("%s" % p,text):
# do something
这段代码绝对不行,因为我的模式中有括号。将“\”添加到所有特殊字符将解决此问题,但这看起来很愚蠢。
我想知道有更好的方法吗?比如,使用魔术引号来逃避正则表达式中的所有特殊字符?谢谢!
答案 0 :(得分:1)
您可以使用re.escape()
来转义特殊字符:
>>> s = "11 (1)"
>>> import re
>>>
>>> re.escape(s)
'11\\ \\(1\\)'
答案 1 :(得分:1)
如果你忽略了所有特殊字符,为什么要使用正则表达式呢?那时你正在进行直接的纯文本比较。
for p in patterns:
if p in text:
# do something