想了解一下這個項目是什麼,我正在嘗試編寫一種標記語言來編譯爲HTML/CSS。我計劃格式化這樣的鏈接:@(鏈接掩碼)[(鏈接網址)],我想查找所有這一切,並獲得鏈接掩碼和鏈接網址。如何在Python中找到多個相同的格式?
我嘗試使用這個代碼是:
re.search("@(.*)\[(.*)\]", string)
但它開始在一審開始,在鏈接的最後一個實例的結束而結束。任何想法,我怎麼能找到他們所有的人,在一個列表或什麼?
想了解一下這個項目是什麼,我正在嘗試編寫一種標記語言來編譯爲HTML/CSS。我計劃格式化這樣的鏈接:@(鏈接掩碼)[(鏈接網址)],我想查找所有這一切,並獲得鏈接掩碼和鏈接網址。如何在Python中找到多個相同的格式?
我嘗試使用這個代碼是:
re.search("@(.*)\[(.*)\]", string)
但它開始在一審開始,在鏈接的最後一個實例的結束而結束。任何想法,我怎麼能找到他們所有的人,在一個列表或什麼?
正則表達式的默認行爲是「貪婪匹配」。這意味着每個.*
將盡可能多的字符,因爲它可以匹配。
你希望它們匹配儘可能少的字符數量,爲此,改變每個.*
變成.*?
。最後的問號將使模式匹配最少的字符數。由於您將模式固定爲]
字符,因此它仍然會正確匹配/消耗整個鏈接。
*
是貪婪的:它可以匹配儘可能多的字符,例如,直到文檔中最後一個右括號。 (畢竟,.
意味着「任何字符」和)
是「任意字符」不亞於任何其它字符。)
您需要的*
的非貪婪版本,這是*?
(也許其實你應該使用+?
,因爲我不認爲零長度的比賽將是非常有用的)。