Я новичок в регулярных выражениях. Я хочу использовать функцию java replaceAll() для замены любых комментариев CSS в строке.
В основном я хочу использовать регулярное выражение для поиска всего, что окружено "/*
" и "*/
", и заменить его на "".
В одном примере, когда простое регулярное выражение терпит неудачу:
body { font-family: "/* this is not a comment */"; }
Но если вас не волнуют эти случаи, вы можете просто пойти с этим:
str.replaceAll("/\\*.*?\\*/", "");
Совпадение начинается с первого найденного /*
, а затем ищет следующий */
с максимально возможным количеством символов (.*?
).
Это невозможно. Большинство комментариев можно найти в большинстве ситуаций с регулярными выражениями, но CSS не является регулярной грамматикой, поэтому вы не можете найти все случаи с регулярными выражениями.
Возможно, вы запустите javascript через один из доступных доступных мини-приложений javascript/CSS. Среди других трюков, чтобы сделать его меньше, он также удаляет комментарии.
Я предлагаю использовать компрессор YUI. 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.