贪婪模式和非贪婪模式

贪婪模式指Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符。
非贪婪模式与贪婪相反,总是尝试匹配尽可能少的字符,可以使用"*","?","+","{m,n}"后面加上 ? 使贪婪变成非贪婪。

import re

举例1、
#贪婪模式
pattern=r'(.+)(\d+-\d+-\d+)'
s='Thisismytel:133-1234-1234'
o=re.match(pattern,s)
print(o.group(1))   #结果:Thisismytel:13
print(o.group(2))   #结果:3-1234-1234


#非贪婪模式
pattern=r'(.+?)(\d+-\d+-\d+)'
s='Thisismytel:133-1234-1234'
o=re.match(pattern,s)
print(o.group(1))   #结果:Thisismytel:
print(o.group(2))   #结果:133-1234-1234


举例2、
#贪婪模式
pattern=r'abc(\d+)'
s='abc123'
o=re.match(pattern,s)
print(o.group(1))   #结果:123

#非贪婪模式
pattern=r'abc(\d+?)'
s='abc123'
o=re.match(pattern,s)
print(o.group(1))   #结果:1

#贪婪模式
s='aa<div>test1</div>bb<div>test2</div>cc'
pattern='<div>.*</div>'
o=re.search(pattern,s)
print(o.group())  #结果:<div>test1</div>bb<div>test2</div>

#非贪婪模式
s='aa<div>test1</div>bb<div>test2</div>cc'
pattern='<div>.*?</div>'
o=re.search(pattern,s)
print(o.group())  #结果:<div>test1</div>



#贪婪模式
s='aa<div>test1</div>bb<div>test2</div>cc'
pattern='<div>.*</div>'
o=re.findall(pattern,s)
print(o)   #结果:['<div>test1</div>bb<div>test2</div>']

#非贪婪模式
s='aa<div>test1</div>bb<div>test2</div>cc'
pattern='<div>.*?</div>'
o=re.findall(pattern,s)
print(o)   #结果:['<div>test1</div>', '<div>test2</div>']

#非贪婪模式
s='aa<div>test1</div>bb<div>test2</div>cc'
pattern='<div>(.*?)</div>'
o=re.findall(pattern,s)
print(o)   #结果:['test1', 'test2']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在壹心理上看到一篇文章,讲的是英国一个电视纪录片,叫《人生七年》,记录了14个小朋友,从7岁到56岁的人生...
    晓可以阅读 581评论 2 0
  • Spring的配置文件读取通过ClassPathResource进行封装。 对不同来源的资源文件都有相应的Reso...
    jacobyq阅读 3,580评论 0 0
  • 相博超妈妈 2017年9月29 这两天真是忙晕了每天下班就六点了,好几天没好好给他爷两个做顿饭吃了,今天回来婆婆...
    一年级四班相博超妈妈阅读 228评论 0 0

友情链接更多精彩内容