正则表达式匹配CSS中的任何“UNUSED”规则(类,id等)

时间:2012-08-11 22:36:51

标签: css regex code-cleanup

我有一个巨大的CSS文件,我想减少只使用css规则。

我使用CSS Usage Add-on为Firebug做到了这一点。它为每个未使用的规则添加了“UNUSED”标签。现在我想摆脱这些。

CSS代码如下所示:

body {
line-height: 1;
text-align: left;
}
UNUSED.multiple-list {
font-weight: bold;
line-height: 1.4;
list-style: disc;
margin-left: 20px
}

UNUSEDmenu, UNUSEDol, ul {
list-style: none
}
UNUSEDblockquote, UNUSEDq {
quotes: none
}

我尝试使用RegExr在线服务找到自己的正则表达式,但我只能选择花括号之间的部分。

到目前为止

我的正则表达式:

\{([^}]+)\}

如何修改表达式以从“UNUSED”到结束花括号中选择任何内容?但只有事情以“未使用”开头?不应标记所有其他规则。

2 个答案:

答案 0 :(得分:4)

此正则表达式将匹配任何UNUSED属性: UNUSED.*\{[^}]*\}|UNUSED.*[}]*

正则表达式的第一部分匹配任何包含块的UNUSED属性,正则表达式的第二部分(在|之后)匹配任何不包含块的UNUSED属性 - 所以你完全是覆盖。 它将匹配类,id,块,单行 - 每个UNUSED属性。

RegExr test


* jdlx's regex稍微复杂一点,但它更好更安全。看看它。

答案 1 :(得分:2)

amiregelz 的正则​​表达式above会将规则与有效的选择器匹配..因此打破了CSS。
这里是my2¢重新制作它:

第1步 - 将整个规则未使用的选择器匹配,并删除整个规则:

(?<=}|/)\s*(UNUSED[.#:<>\+\w\d\s_-]+)(,\s*UNUSED[.#:<>\+\w\d\s_-]+)*\{[^\}]+}

第2步 - 在具有有效/使用选择器的规则上匹配所有未使用的选择器

(UNUSED[.#:<>\+\w\d\s_-]+,\s)|(,\s*UNUSED[.#:<>\+\w\d\s_-]+)

RegExr测试:Step 1 - Step 2

HTH