重复匹配: {n} {m,n} * + .
字符集匹配:[abc] [a-zA-Z] [^12c] 作用:或\- 范围
分组:() (|)
\特殊字符匹配:\d \w \s ^ $
re常用方法:
findall:匹配str中所有符合的字符,以列表统一存放
search:匹配str中第一个符合的字符,返回一个对象
match:匹配str中开头符合的字符,返回一个对象
complie:把正则匹配式封装为一个对象,方便后续直接调用
ob = re.compile('\d+|\.com')
ob.方法(str)
print(ob.search('youare 123.com').group())
print(ob.findall('youare 123.com'))
split:与str的替换分割类似
print(re.split('[y2]','areyou are 12\t3'))
正则练习工具:https://regex101.com/
正则表达式环式的用法:
-
?=代表零宽度正预测先行断言,它断言自身出现的位置的后面可以匹配后面跟的表达式。(re.findall( '(?=you).* ','hao are you keni ') 从字符串中匹配输出一个结果 ,这个结果的右边是you ,you本身不匹配输出,)
-
?<=代表零宽度正回顾后发断言,它断言自身出现的位置的前面可以匹配后面跟的表达式。
-
?!代表零宽度负预测先行断言,它断言自身出现的位置的后面不可以匹配后面跟的表达式。
-
?<!代表零宽度负回顾后发断言,它断言自身出现的位置的后面不可以匹配后面跟的表达式。
print('------------')
print((re.search('(?=.*[a-z])(?=.*[0-9])(?=.*[A-Z])^([A-Z0-9a-z]){6,}$','123abA44').group()))
# search与findall匹配的不同
print((re.findall('(?=.*[a-z])(?=.*[0-9])(?=.*[A-Z])^([A-Z0-9a-z]){6,}$','123abA44')))
print((re.search('(?=.*[A-Z0-9a-z])^([A-Z0-9a-z]){6,}$','124sf4AASF564').group()))
引用了其他博客主的文章,分享链接:https://mp.weixin.qq.com/s?__biz=MzI5NDY1MjQzNA==&mid=2247486543&idx=2&sn=4d62f90437f3ab30a3f2f802f54a328b&chksm=ec5ed332db295a24107cd1267759927d394327f1bca29fcee8cb4936d7235512eddb11666781&scene=21#wechat_redirect