在《python之正则表达式1》一文, 讲解?
和*?,+?,??
两小节时,我提到了一个观点:认为 ?
不是贪婪模式。这个观点是不正确的。
在@burran的帮助下,我搞明白了里面的道道。具体细节在python forum。
原因如下:
- ‘?’ quantifier 是匹配0次或1次,并尽可能多的匹配. 也就是说,对于’?’ quantifier ,它有两种选择,匹配0次或者匹配1次,但是它选择了更多的那种选项,即 匹配1次。所以这就是 把它也归为 贪婪模式(greedy)的原因。
- ‘??’ quantifier 也是匹配0次或1次,但是尽可能少的匹配. 也就是说,对于’??’ quantifier ,它有两种选择,匹配0次或者匹配1次,但是它选择了更少的那种选项,即 匹配0次。所以这就是 把它也归为 非贪婪模式(lazy or non-greedy)的原因。