1 回答

TA貢獻1848條經驗 獲得超10個贊
問題是您僅在字符串范圍內搜索。^僅匹配行開頭和$行結尾。
由于您的字符串包含更多數據,^并且$不會匹配。
將您的正則表達式更改為(#(?:[A-F]|[0-9]){6}),它將正常工作:
>>> re.findall(r'(#(?:[A-F]|[0-9]){6})', largeString)
['#C4F407', '#FF00AA']
請注意,我?:在內括號中包含了 a,并且在外括號中包含了 a。這樣,我們的正則表達式將不會捕獲內括號內的內容,而只會捕獲全顏色。
另請注意,我使用了r''正則表達式字符串。它表明 python 解釋器不應解釋轉義字符,例如\b和 將它們留給正則表達式。我建議在所有正則表達式字符串上使用它們。
\b為了避免匹配超出第六個字符,您可以在正則表達式的末尾添加邊框,例如(#(?:[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']
添加回答
舉報