贪婪模式和非贪婪模式

#正则表达式通常使用于查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能默认是非贪婪),总是尝试匹配尽可能多的字符;非贪婪模式刚好相反,总是尝试匹配尽可能少的字符。
#例如,正则表达式"ab*"如果用于查找"abbbc",就会找到"abbb"。如果使用非贪婪的数量词"ab*?",就会找到"a"。
#例如
1 #!/usr/bin/python3
2 #-*-coding:UTF-8-*-
3 #贪婪模式和非贪婪模式
4 
5 import re
6 
7 print(re.match(r'^(\d+)(0*)$','102300').groups())
#执行结果如下:
1 D:\Pythonworkspace>python 贪婪模式和非贪婪模式.py
2 ('102300', '')
#由于\d+采用贪婪模式,直接把后面的0全匹配了,结果0*只能匹配空字符串。要让0*能够匹配到后面的两个0,必须让\d+采用非贪婪匹配(尽可能匹配)。在0*后面加一个?就可以让\d+采用非贪婪匹配。具体实现如下:
1 #!/usr/bin/python3
2 #-*-coding:UTF-8-*-
3 #贪婪模式和非贪婪模式
4 
5 import re
6 
7 print(re.match(r'^(\d+?)(0*)$','102300').groups())
#执行结果如下:
1 D:\Pythonworkspace>python 贪婪模式和非贪婪模式.py
2 ('1023', '00')

 

转载于:https://www.cnblogs.com/DLHe/p/8327455.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值