贪婪模式指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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。