python正则用法整理
叒是一篇笔记整理,这次来整理下python的正则匹配。其实主要就是几个函数的区别。
match(), search(), findall(),finditer()区别
match()
仅匹配字符串开头是否正确,如果首字符不匹配就返回Nonesearch()
寻找第一个匹配的结果,返回一个match对象findall()
查找所有匹配项,返回匹配的子串列表finditer()
跟findall类似,只不过返回的是个迭代器1
2
3
4
5
6
7
8
9
10
11import re
src = "22你好 世界"
pat = re.compile('[\u4e00-\u9fa5]+')
pat.search(src)
>> <re.Match object; span=(2, 4), match='你好'>
pat.search(src).group() # 返回匹配的内容
>> 你好
pat.search(src).span() # 返回匹配子串的下标元组
>> (2, 4)
pat.findall(src) # 返回匹配子串列表
>> ['你好', '世界']
常用正则表达式
- 匹配邮箱
\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
- 匹配中文(不含标点)
[\u4e00-\u9fa5]+
- 匹配时间(hh:mm:ss)
([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d
- 匹配ip
\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}
- 匹配日期(年-月-日)
(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)
- 向前匹配和向后匹配
(?<=前).*?(?=后)
最后附上一个超级好用的在线正则测试工具
python正则用法整理