python之正則表達式1(補充)

在《python之正則表達式1》一文, 講解?*?,+?,??兩小節時,我提到了一個觀點:認爲 ?不是貪婪模式。這個觀點是不正確的

question mark is lazy

在@burran的幫助下,我搞明白了裏面的道道。具體細節在python forum

原因如下:

  • ‘?’ quantifier 是匹配0次或1次,並儘可能多的匹配. 也就是說,對於’?’ quantifier ,它有兩種選擇,匹配0次或者匹配1次,但是它選擇了更多的那種選項,即 匹配1次。所以這就是 把它也歸爲 貪婪模式(greedy)的原因。
  • ‘??’ quantifier 也是匹配0次或1次,但是儘可能少的匹配. 也就是說,對於’??’ quantifier ,它有兩種選擇,匹配0次或者匹配1次,但是它選擇了更少的那種選項,即 匹配0次。所以這就是 把它也歸爲 非貪婪模式(lazy or non-greedy)的原因。