正则表达式里match和group某用法

本文探讨了Python中正则表达式的使用技巧,特别是通过示例对比了贪婪与非贪婪模式下.+与.+?的不同行为,并解释了如何利用group()方法来提取所需信息。

今天在用正则时,发现match和group里面一个很容易疏忽的点。

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+?(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group(1)   #提取
print(a)

运行结果:

23564-235-22-423

如果改成:

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group(1)   #提取
print(a)

运行结果:

4-235-22-423

因为

.+ 是匹配任意多个字符,再加?是非贪婪格式,所以第一段程序里面.+?是非贪婪模式,只匹配了this is a number,使
(\d+-\d+-\d+-\d+)得到了满足匹配形式的最多数字;第二段程序.+是贪婪模式,匹配了this is a number 2356,只让(\d+-\d+-\d+-\d+)得到了满足匹配形式的最少数字
如果group()内不填数字,则为所有字符:

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group()   #提取

print(a)

this is a number 23564-235-22-423

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值