一个例子帮您掌握python正则re.match、re.search和re.findall的区别

在使用python正则进行字符串匹配查询时,最常用的三个函数是re.match、re.search和re.findall,在这里我就用一个例子带大家了解这三者的使用区别,话不多说我们直接上代码!

import re

txt="test,a:123,b:1234,c:12345,hello!"

re.match

#从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None

m1=re.match(r'(\d+),', txt)

print(m1)

输出:None

原因是 txt 变量是以test开头,所以并没有从首字母开始完全匹配

re.search

#若string中包含pattern子串,则返回匹配对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个。

m2=re.search(r'(\d+),', txt)

print(m2)

输出:<re.Match object; span=(7, 11), match='123,'>

原因是search是只要在字符串中知道匹配对象,就会返回第一个匹配的对象。如果想要看具体的匹配对象值,使用print(m2.group())即可。

re.findall

#findall 通过group() 来进行多个值得匹配,返回string中所有与pattern相匹配的全部字串,返回形式为list。

m3 = re.findall(r'(\d+),', txt)

print(m3)

输出:['123', '1234', '12345']

原因是findall会返回多个符合匹配表达式的对象值,返回形式是list

#如果需要匹配多个分组表达式,可以使用例如:(\w+) 和(\d+)两个group 表达式进行匹配

m4 = re.findall(r'(\w+):(\d+),', txt)

print(m4)

输出:[('a', '123'), ('b', '1234'), ('c', '12345')]

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值