python之正則表達式1(補充)
時間 2021-01-13
標籤
python
正則表達式
在《python之正則表達式1》一文, 講解?
和*?,+?,??
兩小節時,我提到了一個觀點:認爲 ?
不是貪婪模式。這個觀點是不正確的。
在@burran的幫助下,我搞明白了裏面的道道。具體細節在python forum。
原因如下:
- ‘?’ quantifier 是匹配0次或1次,並儘可能多的匹配. 也就是說,對於’?’ quantifier ,它有兩種選擇,匹配0次或者匹配1次,但是它選擇了更多的那種選項,即 匹配1次。所以這就是 把它也歸爲 貪婪模式(greedy)的原因。
- ‘??’ quantifier 也是匹配0次或1次,但是儘可能少的匹配. 也就是說,對於’??’ quantifier ,它有兩種選擇,匹配0次或者匹配1次,但是它選擇了更少的那種選項,即 匹配0次。所以這就是 把它也歸爲 非貪婪模式(lazy or non-greedy)的原因。