zeon

python贪婪和非贪婪

 

Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;

非贪婪则相反,总是尝试匹配尽可能少的字符。

在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。

 

>>> s="This is a number 234-235-22-423"
>>> r=re.match(".+(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
\'4-235-22-423\'
>>> r=re.match(".+?(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
\'234-235-22-423\'
>>>

 

>>> re.match(r"aa(\d+)","aa2343ddd").group(1)
\'2343\'
>>> re.match(r"aa(\d+?)","aa2343ddd").group(1)
\'2\'
>>> re.match(r"aa(\d+)ddd","aa2343ddd").group(1) 
\'2343\'
>>> re.match(r"aa(\d+?)ddd","aa2343ddd").group(1)
\'2343\'
>>>

 

分类:

技术点:

相关文章:

  • 2021-11-29
  • 2021-11-29
  • 2021-11-18
  • 2021-12-12
  • 2021-11-29
  • 2022-12-23
  • 2021-05-16
猜你喜欢
  • 2021-12-15
  • 2021-07-20
  • 2021-11-29
  • 2021-11-29
  • 2021-06-24
  • 2021-11-29
  • 2021-09-25
相关资源
相似解决方案