匹配符
| 符号 | 含义 | 
| \d | 数字 | 
| \w | 字母或数字 | 
| \s | 空白符 | 
| . | 任意字符 | 
| {n}/{n,m} | n个字符/n~m个字符 | 
| + | 至少一个字符 | 
| * | 任意个字符 | 
| ? | 0个或者1个字符 | 
| [] | 表示范围 | 
| ^ | 开头 | 
| $ | 结尾 | 
re模块
| 12
 
 | re.match(r'正则表达式','输入字符串')re.splite(r'正则表达式','输入字符串')
 
 | 
分组
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | >>> m = re.match(r'^(\d{3})-(\d{3,8})$','010-12345')>>> m
 <_sre.SRE_Match object at 0x10054fc68>
 >>> m.group(0)
 '010-12345'
 >>> m.group(1)
 '010'
 >>> m.group(2)
 '12345'
 
 | 
贪婪匹配
正则匹配默认是贪婪匹配,也就是说会匹配尽可能多的字符。
| 12
 3
 4
 5
 6
 
 | >>> re.match(r'^(\d+)(0*)$','102300').groups()('102300', '')
 
 >>> re.match(r'^(\d+?)(0*)$','102300').groups()
 ('1023', '00')
 
 
 | 
预编译
在Python中使用正则表达式时,re模块内部会干两件事:  
- 编译正则表达式,如果正则表达式的字符串本省不合法就会报错;  
- 用编译后的正则表达式去匹配字符串。
如果一个正则表达式需要重复使用几千次,考虑效率,可以预编译正则表达式,接下来不需要再重复编译了,直接匹配:
| 12
 3
 4
 5
 6
 
 | >>> import re>>> re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
 >>> re_telephone.match('010-12345').groups()
 ('010', '12345')
 >>> re_telephone.match('010-80992').groups()
 ('010', '80992')
 
 | 
感谢网上恩师廖雪峰老师的Python教程,本文大部分内容都摘自于此。