Регулярное выражение для удаления строк с комментариями - PullRequest
2 голосов
/ 26 декабря 2011

Я использовал регулярное выражение //.*|(\"(?:\\\\[^\"]|\\\\\"|.)*?\")|(?s)/\\*.*?\\*/ для экранирования строк комментария, и он работает хорошо, но он застрял над строкой if (broper.equals("//BR") && brlnum.equals("0")) и рассматривал его как строку комментария и экранировал ее.

Какая коррекция требуется?

1 Ответ

0 голосов
/ 26 декабря 2011

Это немного рискованно и может потерпеть неудачу, если сами комментарии могут содержать нечетное количество кавычек. Но если это не проблема, вы можете поискать // s, за которыми следует четное число кавычек, тем самым гарантируя, что вы не находитесь внутри строки:

//(?:[^"\r\n]*"[^"\r\n]*")*[^"\r\n]*$|/\*.*?\*/

Второй вариант соответствует стандартному, неопубликованному /*...*/ комментариям.

В Java:

Pattern regex = Pattern.compile("//(?:[^\"\r\n]*\"[^\"\r\n]*\")*[^\"\r\n]*$|/\\*.*?\\*/", Pattern.DOTALL | Pattern.MULTILINE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...