正则表达式

重复匹配: {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





posted @ 2021-02-27 15:40  樱花满地集  阅读(53)  评论(0)    收藏  举报