0

我需要一些正则表达式帮助。

使用 Firefox firebug 扩展“css-usage”,我能够导出一个新的 css 文件,该实用程序将“未使用”添加到页面中未引用的每个类。

我现在想删除所有包含 UNUSED 样式的样式,但是这样做有一些复杂性。也就是说,一些标签与其他可能仍在使用的标签/选择器用逗号分隔,所以我不想删除任何有逗号的行。其次,一些样式是在花括号中的长多行块中指定的,所以我不想删除任何没有右花括号“}”的行。

我使用的是 mac,所以任何带有 SED 或 AWk 或 vi 的解决方案都是可以接受的。我想删除 css 文件中以“未使用”开头且不包含逗号且必须有一个右大括号“}”的所有行。

4

3 回答 3

0

要在不捕获该字符或向前移动指针的情况下测试字符串是否包含字符,请使用前瞻。

(?=.*[,])

或者,要确保字符串不包含该字符,请使用否定前瞻。

(?!.*[,])

如果要确保字符串不包含字符但包含其他字符,则可以组合负前瞻和正前瞻。

(?!.*[,])(?=.*[}])(?=.*UNUSED)

最后,要实际选择发生此匹配的整个字符串,请在前瞻后使用 .*。

^(?!.*[,])(?=.*[}])(?=.*UNUSED).*$

我最熟悉 .NET,但我相信许多正则表达式引擎都有允许您指定是否匹配整个输入字符串的开头/结尾或一行的开头/结尾的^选项。$你想要第二个选项。

最后,您可以使用正则表达式替换将与给定表达式匹配的行替换为空字符串(从而“删除”这些行)。

于 2012-10-16T20:26:56.273 回答
0

要匹配UNUSED不带逗号并确保它以 : 结尾}

UNUSED [^,]*}
于 2012-10-16T20:28:23.710 回答
0

使用正则表达式模式

^UNUSED[^,]*}[^,]*$

带有多行修饰符。

于 2012-10-16T20:30:25.177 回答