從Dive into Python3,正則表達式:can「。*」是否與「。*?」匹配相同的字符串做?
re.findall(' s.*? s', "The sixth sick sheikh's sixth sheep's sick.")
它解釋說:
正則表達式尋找一個空格,一個s,然後是最短的系列中的任何字符,然後(*?)空間,然後另一個s。
我的問題是:能否.*
與.*?
匹配相同的字符串嗎?
從Dive into Python3,正則表達式:can「。*」是否與「。*?」匹配相同的字符串做?
re.findall(' s.*? s', "The sixth sick sheikh's sixth sheep's sick.")
它解釋說:
正則表達式尋找一個空格,一個s,然後是最短的系列中的任何字符,然後(*?)空間,然後另一個s。
我的問題是:能否.*
與.*?
匹配相同的字符串嗎?
我的問題是:can。*是否與。*匹配相同的字符串?做?
是的,如果只有一個模式存在,如' sany s'
存在。那就是,找到了一個匹配。
實施例:
是。如果貪婪的匹配與懶惰匹配相同。
>>> 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
你在一般的意思,或者在這個特定的情況下? –
*可以*它?是。 *會*它?這取決於模式。閱讀貪婪與不貪婪的匹配。長話短說,'。*'是貪婪的,並且會首先匹配它所能做的一切,然後向後退出,只放棄它必須滿足模式的其餘部分(模式的其餘部分的最後一個例子)。 '。*?'是非貪婪的,並且會向前匹配,直到它遇到模式其餘部分的第一個實例。 –