正则表达式里match和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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值