正则表达式re模块
re模块用法:
1、res = re.match('^Liang', 'Liangshuhui') # 如果匹配则有返回,否则为空。注意:match是从头开始匹配,在此处^没用
2、re.search比较常用
3、re.findall
4、res.group() # 查找匹配到的模式
5、re.split(pattern, string, maxsplit=0, flags=0) #分割
6、re.sub(pattern, repl, string, count=0, flags=0) #替换
常用正则表达式符号:
1、".":匹配除\n外的所有符号
2、"^":匹配字符开关
3、$:匹配字符结尾
4、+:匹配前一个字符1次或多次
5、?:匹配前一个字符0次或1次
6、{m}:匹配前一个字符m次
7、{n,m}:匹配前一个字符n到m次
8、|:匹配其左边或右边的字符
9、(...):分组匹配
10、\A:和^一样
11、\Z:和$一样
12、\d:匹配数字
13、\D:匹配非数字
14、\w:匹配[a-zA-Z0-9]
15、\W:与\w相反,即特殊字符
16、'\s':匹配空白字符,\t \n \r
17、(?p<name>...):分组匹配
如:
A、re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').groupdict()
{'province': '44', 'city': '01', 'town': '81'}
B、res = re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').group('city')
res
'01'
C、
re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').group()
'440181'
18、匹配反斜杠:建议r'\\'
匹配模式:
re.I:忽略大小写
re.DOTALL或re.S:单行模式改变了点号(.)的匹配行为
re.M:多行模式,在多行模式下,^除了匹配整个字符串的起始位置,还匹配换行符后面的位置;$除了匹配整个字符串的结束位置,还匹配换行符前面的位置.
非贫婪模式切换:在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪
前瞻后顾:未完待上