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']
添加回答
举报