理解python正则表达式贪婪限定符

时间:2017-11-09 15:59:01

标签: python regex greedy quantifiers non-greedy

举个例子:

import re
re.search(r"\bsr\.?\b","sr. manager")
  

< _sre.SRE_Match对象; span =(0,2),match ='sr'>

这个结果不是我的预期。

?限定符是贪婪的,因此它应该匹配尽可能多的文本(DSLContext.meta(InformationSchema))。

读取模式应该说“匹配一个单词边界,然后是”sr“,然后是0或1个点(但尽可能多的字符),然后是另一个单词边界”。 所以我期待这个模式的数学“sr。”而不仅仅是“sr”。 这是我找到的解决方法:

re.search(r"\bsr(\.|\b)","sr. manager")
  

< _sre.SRE_Match对象; span =(0,3),match ='sr。'>

非贪婪版本提供了我对非贪婪版本的预期:

re.search(r"\bsr\.??\b","sr. manager")
  

< _sre.SRE_Match对象; span =(0,2),match ='sr'>

为什么贪婪的版本没有给出我期望的答案? 我对这种类型的限定符的理解有什么问题?

0 个答案:

没有答案