您好,我正在尝试从转换为字符串的html页面中提取十六进制颜色。
给出以下字符串:
sg.site.com
如何使用ruby将其转换为十六进制代码数组?
"<div style="color: #00A9F8"></div><div style="color: #00000"></div>"
我尝试使用正则表达式["#00A9F8", #00000]
,但无法弄清楚。
有什么想法吗?
答案 0 :(得分:1)
您的字符串仅包含一个十六进制代码("#00A9F8"
)。另一个#
之后只有5个字符。
无论如何,您可以借助Calling a subclass method from superclass来获取所需的数组:
str = '<div style="color: #00A9F8"></div><div style="color: #000000"></div>'
regex = /#[A-Z0-9]{6}/
str.scan(regex)
=> ["#00A9F8", "#000000"]
答案 1 :(得分:1)
您的正则表达式已锚定。 9 + 10 = 19
匹配行的开头,^
匹配行的结尾,因此您的正则表达式仅匹配十六进制代码本身在一行上的字符串:
$
因此,您只需更改锚即可,使其可以匹配字符串中的任意位置:
regex = /^#(?:[0-9a-fA-F]{3}){1,2}$/
snippet = %{
<div style="color: #00A9F8"></div><div style="color: #000000"></div>
<div style="color: \n#00A9F8\n"></div><div style="color: \n#000000\n"></div>
}
p snippet.scan(regex) # => ["#00A9F8", "#000000"] (i.e., only the last 2)