我目前有大量 HTML 文本,并且有几个类似于以下内容的 CSS 属性:
font:16px/normal Consolas;
font:16px/normal Arial;
font:12px/normal Courier;
它还与其他几个 CSS 属性和其他相关的 HTML 值和标签捆绑在一起。
我一直在尝试编写一个只会抓取这些“字体样式”的正则表达式,所以如果我有以下两段:
<p style='font:16px/normal Arial; font-weight: x; color: y;'>Stack</p>
<span style='color: z; font:16px/normal Courier;'>Overflow</span>
<br />
<div style='font-family: Segoe UI; font-size: xx-large;'>Really large</div>
它只会匹配font:
以分号开头和结尾的属性;
。
我玩过使用RegexHero,我得到的最接近的是:
\b(?:font[\s*\\]*:[\s*\\]*?(\b.*\b);)
结果如下:
font:bold; //Match
font:12pt/normal Arial; //Match
font:16px/normal Consolas; //Match
font:12pt/normal Arial; //Match
property: value; //Not a Match
property: value value value; //Not a Match
但是当我尝试放入一大块 HTML 时,事情似乎变得混乱,并且选择了大块而不是在先前指定的范围内。
我很乐意提供任何其他信息和测试数据。