python之正则表达式1(补充)

在《python之正则表达式1》一文, 讲解?*?,+?,??两小节时,我提到了一个观点:认为 ?不是贪婪模式。这个观点是不正确的

python之正则表达式1(补充)

在@burran的帮助下,我搞明白了里面的道道。具体细节在python forum

原因如下:

  • ‘?’ quantifier 是匹配0次或1次,并尽可能多的匹配. 也就是说,对于’?’ quantifier ,它有两种选择,匹配0次或者匹配1次,但是它选择了更多的那种选项,即 匹配1次。所以这就是 把它也归为 贪婪模式(greedy)的原因。
  • ‘??’ quantifier 也是匹配0次或1次,但是尽可能少的匹配. 也就是说,对于’??’ quantifier ,它有两种选择,匹配0次或者匹配1次,但是它选择了更少的那种选项,即 匹配0次。所以这就是 把它也归为 非贪婪模式(lazy or non-greedy)的原因。