Java - 正则表达式问题

时间:2010-06-13 21:29:37

标签: java regex

我是正则表达式的新手。我想用java的replaceAll()函数替换字符串中的任何CSS注释。

基本上我想使用正则表达式来搜索“/*”和“*/”所包围的任何内容,并将其替换为“”。

4 个答案:

答案 0 :(得分:2)

无法做到。您可以在大多数情况下使用正则表达式查找大多数注释,但CSS不是常规语法,因此您无法找到具有正则表达式的所有案例。

答案 1 :(得分:2)

简单正则表达式失败的一个例子是:

body { font-family: "/* this is not a comment */"; }

但是如果你不关心这些情况,你可以简单地说:

str.replaceAll("/\\*.*?\\*/", "");

匹配从它找到的第一个/*开始,然后查找下一个*/,其中尽可能少的字符(.*?)。

答案 2 :(得分:1)

您可以考虑通过众多可用的javascript / CSS最小化程序之一运行javascript。除了使其变小的其他技巧之外,它还删除了评论。

答案 3 :(得分:0)

我建议使用YUI compressorDownload 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的自动部署期间使用它。