转义特殊字符

特殊字符(如下面的字符类括号 [])字面上不匹配:

match = re.search(r'[b]', 'a[b]c')
match.group()
# Out: 'b'

通过转义特殊字符,它们可以按字面匹配:

match = re.search(r'\[b\]', 'a[b]c')
match.group()
# Out: '[b]'

re.escape() 函数可用于为你执行此操作:

re.escape('a[b]c')
# Out: 'a\\[b\\]c'
match = re.search(re.escape('a[b]c'), 'a[b]c')
match.group()
# Out: 'a[b]c'

re.escape() 函数会转义所有特殊字符,因此如果你根据用户输入组成正则表达式,它会很有用:

username = 'A.C.'  # suppose this came from the user
re.findall(r'Hi {}!'.format(username), 'Hi A.C.! Hi ABCD!')
# Out: ['Hi A.C.!', 'Hi ABCD!']
re.findall(r'Hi {}!'.format(re.escape(username)), 'Hi A.C.! Hi ABCD!')
# Out: ['Hi A.C.!']