使用正则表达式匹配媒体查询的开始和结束,但不匹配中间的内容

Jam*_*ite 1 html css regex media-queries

我正在使用 htmlcompressor ( https://code.google.com/p/htmlcompressor/#For_Non-Java_Projects ) 来缩小 HTML 内容(HTML 电子邮件模板)以及文档头部部分中的内联 CSS。我在 Windows 上通过命令行运行此命令:

java -jar /path/to/htmlcompressor --preserve-comments --preserve-line-breaks --compress-css --remove-surrounding-spaces min -p /path/to/minify-preserve.txt --type html original-html -o minified-output.html
Run Code Online (Sandbox Code Playgroud)

在本文档中,有两个媒体查询,我需要防止 htmlcompressor 由于语法问题而进行修改。我环顾四周,发现了这个正则表达式规则:

@media[^{]+\{([\s\S]+?})\s*}
Run Code Online (Sandbox Code Playgroud)

然而,它匹配媒体查询和之间的内容,理想情况下,我需要它仅匹配起始块和结束括号,因此它在这些区域中保留空格以获得有效语法。

这可以通过正则表达式实现吗?根据文档,我仅限于正则表达式,因为它是创建保存规则的唯一方法。

谢谢。

小智 5

你的常规表达几乎是正确的。但在关闭花括号之前缺少(反斜杠)

@media[^{]+\{([\s\S]+?\})\s*\}
Run Code Online (Sandbox Code Playgroud)