嘿,我有一个很大的 html 字符串,比如
<a style="background: rgb(100, 101, 43) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-backg round-inline-policy: -moz-initial;" href="#">swatch4</a>
<a style="background: rgb(34, 68, 33) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-b ackground-inline-policy: -moz-initial;" href="#">swatch5</a>
<a style="background: rgb(11, 38, 68) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -m oz-background-inline-policy: -moz-initial;" href="#">swatch6</a>
<a style="background: rgb(39, 11, 60) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial ; -moz-background-inline-policy: -moz-initial;" href="#">swatch7</a>
...这样的条目有很多...
我最终想要的是一个 php 数组
$colors = array(
'rgb(34, 34, 33)',
'rgb(11, 38, 68)',
...
);
etc.
我需要帮助提取字符串的 rgb 部分的步骤。我的正则表达式吃掉了太多字符串,遇到了麻烦。任何帮助将不胜感激,我想把它记下来并学习如何做(而不是仅仅完成它)。顺便说一句,我正在使用 vim。
Thanks
简单的正则表达式是
(rgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\))
每个“\s*\d{1,3}\s*,”表示:
- 匹配空格(像“ ”这样的空格,或者制表符,正如 molf 在评论中所说,数字从 0 到 inf)
- 匹配一个数字(从 1 位数字到 3 位数字,因为您从 0 到 255)
- 匹配其他空间
- 匹配逗号 (,)
您可以将 Paolo 的代码用于数组部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)