Чтобы использовать только CSS, лучший способ - использовать инструменты разработчика Chrome или FireFox и найти различный стиль, который вы хотите перезаписать.
Для каждого стиля, который вы найдете, который нужно настроить, используйте модификатор !important
.
.newClass {
color:red !important;
}
Другой способ - написать уникальные имена класса css и снова использовать !important
, если вам нужно , Настоящий трюк здесь в особенности. Если идентификатор более специфичен, правило будет применено.
6.4.1.4 Наконец, сортировка по порядку : если два объявления имеют одинаковый вес, происхождение и специфичность, последний указывает на выигрыши. Объявления в импортированных таблицах стилей считаются перед любыми объявлениями в самой таблице стилей.
blockquote>Most awesome link .my-most-awesome-link.its-really-cool { text-decoration:none !important; color:red !important; }
Если вы в отчаянии, вы можете использовать javascript для удаления нежелательных css.
См. JSBin для рабочего примера.
Я нашел эту интересную технику
Попробуйте использовать это регулярное выражение (только для одиночных строк):
String src ="How are things today /* this is comment */ and is your code /* this is another comment */ working?";
String result=src.replaceAll("/\\*.*?\\*/","");//single line comments
System.out.println(result);
REGEX объяснено:
Соответствует символу «/» буквально
Соответствует символу "*" буквально
"." Сопоставьте любой отдельный символ
"*?" Между нулевым и неограниченным временными интервалами, как можно меньше, расширяя по мере необходимости (lazy)
Соответствует символу «*» буквально
Соответствует символу «/» буквально
blockquote>Альтернативно это регулярное выражение для одиночных и многострочных комментариев, добавив (? s) :
//note the added \n which wont work with previous regex String src ="How are things today /* this\n is comment */ and is your code /* this is another comment */ working?"; String result=src.replaceAll("(?s)/\\*.*?\\*/",""); System.out.println(result);
Ссылка:
Попробуйте следующее:
(//[^\n]*$|/(?!\\)\*[\s\S]*?\*(?!\\)/)
Если вы хотите исключить части, заключенные в "", используйте:
(\"[^\"]*\"(?!\\))|(//[^\n]*$|/(?!\\)\*[\s\S]*?\*(?!\\)/)
первая группа захвата идентифицирует все "" части и вторая группа захвата дает вам комментарии (как для одной строки, так и для нескольких строк)
скопируйте регулярное выражение в regex101 , если вы хотите пояснить
Попробуйте это, что сработало для меня:
System.out.println(src.replaceAll("(\/\*.*?\*\/)+",""));
System.out.println(src.replaceAll("\\/\\*.*?\\*\\/ ?", ""));
Вы должны использовать не-жадный квантификатор? чтобы заставить регулярное выражение работать. Я также добавил '?' в конце регулярного выражения, чтобы удалить одно пространство.
Лучшее многострочное выражение regex комментариев - это развернутая версия (?s)/\*.*?\*/
, которая выглядит как
String pat = "/\\*+[^*]*\\*+(?:[^/*][^*]*\\*+)*/";
См. пояснение в regex101.com .
Короче говоря,
/\*+
- сопоставить начало комментария, /*
и любые звездочки 0+ после него [^*]*\*+
- сопоставить 0+ символов, кроме *
, за которыми следуют 1+ литеральные *
(?:[^/*][^*]*\*+)*
- 0+ последовательности из: [^/*][^*]*\*+
- не /
или *
(совпадающие с [^/*]
), за которым следуют символы 0 + не звездочки ([^*]*
), за которыми следуют звездочки 1+ (\*+
) /
- закрытие /
regex Дэвида требует 26 шагов , чтобы найти совпадение в моей строке примера, а моему регулярному выражению требуется только 12 шагов . С огромными входами, регулярное выражение Дэвида, скорее всего, потерпит неудачу с проблемой переполнения стека или что-то подобное, потому что совпадение .*?
ленивых точек неэффективно из-за ленивого расширения шаблона в каждом месте, которое выполняет механизм регулярных выражений, в то время как мой шаблон соответствует линейным фрагментам текста в один раз.