1. 程式人生 > >關於Python正則re中的(.*?)

關於Python正則re中的(.*?)

首先來看看他們的基本含義:

問號

(md一直不明白水印為什麼不是我的主頁而是csdn的主頁)

正則表示式通常用於在文字中查詢匹配的字串。Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元;非貪婪的則相反,總是嘗試匹配儘可能少的字元。例如:正則表示式"ab*"如果用於查詢"abbbc",將找到"abbb"。而如果使用非貪婪的數量詞"ab*?",將找到"a"。


所以?的第二個含義,就是作為正則的懶惰模式。

對於:

(abc)dfe(gh)
對上面這個字串使用(.*)將會匹配整個字串,因為正則預設是儘可能多的匹配。
雖然(abc)滿足我們的表示式,但是(abc)dfe(gh)也同樣滿足,所以正則會匹配多的那個。

如果我們只想匹配(abc)和(gh)就需要用到以下的表示式
(.*?)

在重複元字元*或者+等等後面跟一個?,作用就是在滿足的條件下儘可能少匹配。