Рекомендуемый способ организации большого приложения JSF на ежедневных сборках

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

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

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

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

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

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

1
задан Pascal Thivent 26 September 2010 в 17:25
поделиться