【发布时间】:2017-10-21 06:44:58
【问题描述】:
我正在尝试学习 vimscript,所以我想到了在 vim 中制作 rgb(a) 十六进制颜色转换器。我目前正在尝试让它为css工作,我已经制作了解析颜色的部分(返回“#123456”“rgb(120,120,120)”等)并确定它是否是十六进制(以“#”开头),现在我正在尝试检测正确的 rgb/rgba 颜色。
问题是我无法找出它的正则表达式,我在https://regex101.com/做了一个
我使用^rgba?\(\d+,\d+,\d+\) 来匹配 rgb 和 rgba 括号内的数字(带有 gm 标志)。在网站上它工作正常,我用它来搜索:
rgb(10,10,10)
rgba(1,150,20)
rgba(1,2,3)
rgb(12,34,56)
rgba(1,1,1)
rgba(1,150,20)
rgb
rgba
rgb()
rgba()
经过一些谷歌搜索后,我发现 vim 使用自己的语法,我在 vim 文档中搜索并将模式更改为 ^rgba\?\(\d\+,\d\+,\d\+\)。但仍然没有运气。
示例 vimscript 代码:
let color="rgba(10,10,10)"
let s:match = match(color, "^rgba\?\(\d\+,\d\+,\d\+\)")
echom s:match
有人可以指出我正确的方向吗?我有什么明显的遗漏吗?
更新
我无法使用空格(“\s”和“”)似乎不起作用,所以我只是用let color = substitute(color, '\s', '', 'g') 删除了所有空格。
无论如何,我正在使用 Dan Lowe 的建议:\v^rgba?\(\d+,\d+,\d+\)。
【问题讨论】: