2016-11-23 37 views
0

想了解一下這個項目是什麼,我正在嘗試編寫一種標記語言來編譯爲HTML/CSS。我計劃格式化這樣的鏈接:@(鏈接掩碼)[(鏈接網址)],我想查找所有這一切,並獲得鏈接掩碼和鏈接網址。如何在Python中找到多個相同的格式?

我嘗試使用這個代碼是:

re.search("@(.*)\[(.*)\]", string) 

但它開始在一審開始,在鏈接的最後一個實例的結束而結束。任何想法,我怎麼能找到他們所有的人,在一個列表或什麼?

回答

0

正則表達式的默認行爲是「貪婪匹配」。這意味着每個.*將盡可能多的字符,因爲它可以匹配。

你希望它們匹配儘可能少的字符數量,爲此,改變每個.*變成.*?。最後的問號將使模式匹配最少的字符數。由於您將模式固定爲]字符,因此它仍然會正確匹配/消耗整個鏈接。

0

*是貪婪的:它可以匹配儘可能多的字符,例如,直到文檔中最後一個右括號。 (畢竟,.意味着「任何字符」和)是「任意字符」不亞於任何其它字符。)

您需要的*的非貪婪版本,這是*?(也許其實你應該使用+? ,因爲我不認爲零長度的比賽將是非常有用的)。

相關問題