Какая модификация требуется для регулярного выражения для поиска обоих типов комментариев? Я использую netbeans, я программирую в java [duplicate]

Чтобы использовать только CSS, лучший способ - использовать инструменты разработчика Chrome или FireFox и найти различный стиль, который вы хотите перезаписать.

Для каждого стиля, который вы найдете, который нужно настроить, используйте модификатор !important.

.newClass {
  color:red !important;
}

Другой способ - написать уникальные имена класса css и снова использовать !important, если вам нужно , Настоящий трюк здесь в особенности. Если идентификатор более специфичен, правило будет применено.

6.4.1 Каскадный порядок

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 для рабочего примера.

Я нашел эту интересную технику


14
задан Alan Moore 23 April 2013 в 11:27
поделиться

5 ответов

Попробуйте использовать это регулярное выражение (только для одиночных строк):

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)

Соответствует символу «*» буквально

Соответствует символу «/» буквально

Альтернативно это регулярное выражение для одиночных и многострочных комментариев, добавив (? 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);

Ссылка:

11
ответ дан ThomasW 3 September 2018 в 15:15
поделиться

Попробуйте следующее:

(//[^\n]*$|/(?!\\)\*[\s\S]*?\*(?!\\)/)

Если вы хотите исключить части, заключенные в "", используйте:

(\"[^\"]*\"(?!\\))|(//[^\n]*$|/(?!\\)\*[\s\S]*?\*(?!\\)/)

первая группа захвата идентифицирует все "" части и вторая группа захвата дает вам комментарии (как для одной строки, так и для нескольких строк)

скопируйте регулярное выражение в regex101 , если вы хотите пояснить

1
ответ дан ak13 3 September 2018 в 15:15
поделиться

Попробуйте это, что сработало для меня:

System.out.println(src.replaceAll("(\/\*.*?\*\/)+",""));
0
ответ дан Digerkam 3 September 2018 в 15:15
поделиться
System.out.println(src.replaceAll("\\/\\*.*?\\*\\/ ?", ""));

Вы должны использовать не-жадный квантификатор? чтобы заставить регулярное выражение работать. Я также добавил '?' в конце регулярного выражения, чтобы удалить одно пространство.

0
ответ дан jens-na 3 September 2018 в 15:15
поделиться

Лучшее многострочное выражение regex комментариев - это развернутая версия (?s)/\*.*?\*/, которая выглядит как

String pat = "/\\*+[^*]*\\*+(?:[^/*][^*]*\\*+)*/";

См. пояснение в regex101.com .

Короче говоря,

  • /\*+ - сопоставить начало комментария, /* и любые звездочки 0+ после него
  • [^*]*\*+ - сопоставить 0+ символов, кроме *, за которыми следуют 1+ литеральные *
  • (?:[^/*][^*]*\*+)* - 0+ последовательности из: [^/*][^*]*\*+ - не / или * (совпадающие с [^/*]), за которым следуют символы 0 + не звездочки ([^*]*), за которыми следуют звездочки 1+ (\*+)
  • / - закрытие /

regex Дэвида требует 26 шагов , чтобы найти совпадение в моей строке примера, а моему регулярному выражению требуется только 12 шагов . С огромными входами, регулярное выражение Дэвида, скорее всего, потерпит неудачу с проблемой переполнения стека или что-то подобное, потому что совпадение .*? ленивых точек неэффективно из-за ленивого расширения шаблона в каждом месте, которое выполняет механизм регулярных выражений, в то время как мой шаблон соответствует линейным фрагментам текста в один раз.

20
ответ дан Wiktor Stribiżew 3 September 2018 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: