1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
問題是您僅在字符串范圍內(nèi)搜索。^僅匹配行開頭和$行結(jié)尾。
由于您的字符串包含更多數(shù)據(jù),^并且$不會(huì)匹配。
將您的正則表達(dá)式更改為(#(?:[A-F]|[0-9]){6}),它將正常工作:
>>> re.findall(r'(#(?:[A-F]|[0-9]){6})', largeString)
['#C4F407', '#FF00AA']
請(qǐng)注意,我?:在內(nèi)括號(hào)中包含了 a,并且在外括號(hào)中包含了 a。這樣,我們的正則表達(dá)式將不會(huì)捕獲內(nèi)括號(hào)內(nèi)的內(nèi)容,而只會(huì)捕獲全顏色。
另請(qǐng)注意,我使用了r''正則表達(dá)式字符串。它表明 python 解釋器不應(yīng)解釋轉(zhuǎn)義字符,例如\b和 將它們留給正則表達(dá)式。我建議在所有正則表達(dá)式字符串上使用它們。
\b為了避免匹配超出第六個(gè)字符,您可以在正則表達(dá)式的末尾添加邊框,例如(#(?:[A-F]|[0-9]){6})\b:
>>> largeString = '''
#C4F407 // valid color
#ZZZZZZ // invalid color
Hello there! // invalid color
#F08 // invalid color
45E097 // invalid color
#FF00AA // valid color
#0000000 // invalid color
...
'''
>>> re.findall(r'(#(?:[A-F]|[0-9]){6})\b', largeString)
['#C4F407', '#FF00AA']
添加回答
舉報(bào)