我是正则表达式的新手。我想用java的replaceAll()函数替换字符串中的任何CSS注释。
基本上我想使用正则表达式来搜索“/*
”和“*/
”所包围的任何内容,并将其替换为“”。
答案 0 :(得分:2)
无法做到。您可以在大多数情况下使用正则表达式查找大多数注释,但CSS不是常规语法,因此您无法找到具有正则表达式的所有案例。
答案 1 :(得分:2)
简单正则表达式失败的一个例子是:
body { font-family: "/* this is not a comment */"; }
但是如果你不关心这些情况,你可以简单地说:
str.replaceAll("/\\*.*?\\*/", "");
匹配从它找到的第一个/*
开始,然后查找下一个*/
,其中尽可能少的字符(.*?
)。
答案 2 :(得分:1)
您可以考虑通过众多可用的javascript / CSS最小化程序之一运行javascript。除了使其变小的其他技巧之外,它还删除了评论。
答案 3 :(得分:0)
我建议使用YUI compressor。 Download JAR,放入类路径并按如下方式使用:
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream("/path/to/original.css"), "UTF-8"));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/path/to/compressed.css"), "UTF-8"));
new CssCompressor(reader).compress(writer, -1);
} finally {
if (writer != null) try { writer.close(); } catch (IOException logOrIgnore) {}
if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
}
但它不仅删除了注释,而且还缩小了CSS。不确定这是否符合要求,但它也有好处。我们在webapp的自动部署期间使用它。