方括号内的十六进制颜色匹配
问题描述:
我试图匹配一个BBCode颜色标签内的十六进制颜色和只有颜色,但没有隔离只是颜色的问题。方括号内的十六进制颜色匹配
样品BB代码:
[b][color=#ffffff]test text[/color][/b]
我已经能够拿出最好的正则表达式是这样的:
/\[[^[]*?(#[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3})[^]]*?\]/
它打开颜色标记只有它匹配和,但我希望为更具体的东西。我一直在尝试使用一些积极的lookaheads和lookbehinds,但我无法快速。
/(?=\[)(#[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3})(?<=\])/
我希望把它归结为#ffffff作为整个匹配的部分,但任何帮助将不胜感激。
答
这是否对你的工作?
(?<=\[color=)(#[a-f0-9]{3,6})(?=\])
使用反向预搜索((?<=\[color=)
),对于颜色((#[a-f0-9]{3,6})
)捕获组,和先行((?=\])
)。
答
试试这个:
/color=#([\da-fA-F]{2})([\da-fA-F]{2})([\da-fA-F]{2})/
那找到与color=
什么和十六进制颜色代码。
希望这个工程。
'\ [color = \#(。*)\] \ b'? (*因为它是可怕的ahhhhh *) – Darren
有时候之间可能有空格,所以我希望避免基础是围绕颜色。 – NicholasJohn16