python正则用法整理,match(), search(), findall(),finditer()区别详解

叒是一篇笔记整理,这次来整理下python的正则匹配。其实主要就是几个函数的区别。

match(), search(), findall(),finditer()区别

  • match()仅匹配字符串开头是否正确,如果首字符不匹配就返回None

  • search()寻找第一个匹配的结果,返回一个match对象

  • findall()查找所有匹配项,返回匹配的子串列表

  • finditer()跟findall类似,只不过返回的是个迭代器

    import 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)
  • 向前匹配和向后匹配 (?<=前).*?(?=后)

最后附上一个超级好用的在线正则测试工具

原文地址:https://blog.luzy.top/posts/2862589559/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值