2015-08-08 40 views
1

Dive into Python3正則表達式:can「。*」是否與「。*?」匹配相同的字符串做?

re.findall(' s.*? s', "The sixth sick sheikh's sixth sheep's sick.") 

它解釋說:

正則表達式尋找一個空格,一個s,然後是最短的系列中的任何字符,然後(*?)空間,然後另一個s。

我的問題是:能否.*.*?匹配相同的字符串嗎?

+0

你在一般的意思,或者在這個特定的情況下? –

+1

*可以*它?是。 *會*它?這取決於模式。閱讀貪婪與不貪婪的匹配。長話短說,'。*'是貪婪的,並且會首先匹配它所能做的一切,然後向後退出,只放棄它必須滿足模式的其餘部分(模式的其餘部分的最後一個例子)。 '。*?'是非貪婪的,並且會向前匹配,直到它遇到模式其餘部分的第一個實例。 –

回答

1

我的問題是:can。*是否與。*匹配相同的字符串?做?

是的,如果只有一個模式存在,如' sany s'存在。那就是,找到了一個匹配。

實施例:

​​
3

是。如果貪婪的匹配與懶惰匹配相同。

>>> re.findall(' s.*? s', "The sixth sheik") == re.findall(' s.* s', "The sixth sheik")                                  
True 

但是,如果貪婪的匹配時間更長,您將得到不同的結果。

>>> re.findall(' s.*? s', "The sixth sick sheik") == re.findall(' s.* s', "The sixth sick sheik")                               
False 
1

沒有

檢查過here

Results with Question mark

當刪除問號: After question mark removed

相關問題