如何在python中转义正则表达式的所有特殊字符

时间:2015-11-11 19:42:43

标签: python regex

我只是想知道是否有办法忽略模式字符串中的所有特殊字符,而不是在所有字符串中添加“\”。

例如,我有很长的模式列表:

patterns = ["11 (1)", "22 (2)", ... ]

我想使用for循环搜索文本中的模式:

for p in patterns:
    if re.search("%s" % p,text):
        # do something

这段代码绝对不行,因为我的模式中有括号。将“\”添加到所有特殊字符将解决此问题,但这看起来很愚蠢。

我想知道有更好的方法吗?比如,使用魔术引号来逃避正则表达式中的所有特殊字符?谢谢!

2 个答案:

答案 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