我试图在一个大字符串中获得完整的颜色列表(六边形),如下所示:
'''
#C4F407 // valid color
#ZZZZZZ // invalid color
Hello there! // invalid color
#F08 // invalid color
45E097 // invalid color
#FF00AA // valid color
...
'''
所以我写了这个正则表达式来找到它们:
^#([A-F]|[0-9]){6}$
,并且它匹配只有一种颜色的字符串。(我的意思是re.search('^#([A-F]|[0-9]){6}$', '#C456F7'))
匹配#C456F7
)
但是,当我使用
re.findall('^#([A-F]|[0-9]){6}$', largeString)
我得到
[]
当我想得到['#C4F407', '#FF00AA']
我怎样才能得到一份所有写得好的颜色的列表
问题是您只在字符串边界上搜索
^
只匹配行开始和$
行结束由于字符串包含更多数据,
^
和$
将不匹配将正则表达式更改为
(#(?:[A-F]|[0-9]){6})
,它将正常工作:注意,我在内括号中包含了一个
?:
,在外括号中包含了一个。这样,我们正则表达式将不会捕获内括号中的内容,而只捕获全色还要注意,我对正则表达式字符串使用了
r''
。它表示python解释器不应该解释转义字符,例如\b
,而将它们留给正则表达式。我建议在所有正则表达式字符串上使用它们为了避免超过第六个字符的匹配,可以在正则表达式的末尾添加一个边框
\b
,例如(#(?:[A-F]|[0-9]){6})\b
:试试这个正则表达式
相关问题 更多 >
编程相关推荐