在几乎所有的编程语言中 \ 都被作为转义字符, \<某个字母> 在正则表达式也表达了某种预定义字符集
或边界,这导致我们需要匹配 \ 时我们需要写4个反斜杠。
在程序使用过程中,从输入的字符串到正则表达式,其实有两步转换过程,分别是字符串转义和正则转
义。:
例如,对于字符串 “F:\video” ,我们需要提取左边的盘符和右边的路径时,需要这样写:
s = "F:\\video"
re_match = re.match('(.+?)\\\\(.+)', s)
re_match.group(1), re_match.group(2)
但由于Python支持原生字符串,我们就可以这样写:
s = r"F:\video"
re_match = re.match(r'(.+?)\\(.+)', s)
re_match.group(1), re_match.group(2)
结果均为:
('F:', 'video')
有了原生字符串,写出来的表达式会更加直观。
括号的转义:
在正则中方括号 [] 和 花括号 {} 只需转义开括号,但圆括号 () 两个都要转义。我在下面给了你一个比较
详细的例子。
>>> import re
>>> re.findall('\(\)\[]\{}', '()[]{}')
['()[]{}']
>>> re.findall('\(\)\[\]\{\}', '()[]{}') # 方括号和花括号都转义也可以
['()[]{}']
使用函数消除元字符特殊含义:
re模块自带的转义函数escape也可以实现转义:
>>> import re
>>> re.escape('\d') # 反斜杠和字母d转义
'\\\\d'
>>> re.findall(re.escape('\d'), '\d')
['\\d']
>>> re.escape('[+]') # 中括号和加号
'\\[\\+\\]'
>>> re.findall(re.escape('[+]'), '[+]')
['[+]']