Обратите внимание, что у вас есть слишком много избыточных групп захвата внутри шаблона, а (.|\n)+?
конструкция очень неэффективно и может вызывают серьезные проблемы на Java (как и с любым другим движком regex).
Вы можете использовать более рационализирует выражение, которое не должно вызывать много избыточной откаты:
(?:^|\s+)//.*|/\*[^*]*\*+(?:[^/*][^*]*\*+)*/
ВИДЕТЬ regex demo. Используйте его с флагом Pattern.MULTILINE
(или добавьте (?m)
в начале рисунка).
Узор объяснение:
(?:^|\s+)//.*
- (ваши 2 (^\/\/.*)|(\s+\/\/.*)
ветви объединены) одной строкой комментарии в начале строки или после того, как первые 1+ пробелы следуют с //
подстроки (включая эти непечатаемых и вперед слэши)
|
- или
/\*[^*]*\*+(?:[^/*][^*]*\*+)*/
- матч многострочные /**/
комментарии
Java декларация:
String pattern = "(?m)(?:^|\\s+)//.*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";
И sample code:
String s = "// Comment\ntex test\nMore text here // and comment 2\n/* More comments\nhere and\nhere */";
String pattern = "(?m)(?:^|\\s+)//.*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";
System.out.println(s.replaceAll(pattern, ""));
да, вы можете использовать it..you нужно только удвоить где бы ни были черты .. ps _i не говорю, что его правильное регулярное выражение для комментариев capture_ – rock321987
работает в возвышенном виде, поэтому оно должно быть в java, я прав? –
Да, это будет ... только вам нужно избежать косой черты .. как '\ s' для' \\ s' и всех остальных при использовании в Java – rock321987