56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
|
||||||
1 | ||||||
Регулярное выражение: поиск комментариев в коде24.09.2016, 17:19. Показов 4674. Ответов 6
Метки нет (Все метки)
Стоит задача вывести в консоль все комментарии с кода ( "//" и "/* */") с помощью регулярного выражения.
Мой код: Кликните здесь для просмотра всего текста
Проблема в том, что в консоль выводиться и текст между двумя комментариями. Как это убрать?
0
|
24.09.2016, 17:19 | |
Ответы с готовыми решениями:
6
Регулярное выражение для многострочных комментариев Регулярное выражение: нахождение комментариев в тексте Регулярное выражение по удалению комментариев (не задеть хинты) Составить регулярное выражение для комментариев в тексте |
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
|
|
24.09.2016, 17:22 [ТС] | 2 |
Вывод консоли:
0
|
31 / 31 / 12
Регистрация: 25.07.2015
Сообщений: 120
|
|||||||||||
24.09.2016, 18:37 | 3 | ||||||||||
Armatus, буквально пару дней назад делал эту задачу. Могу предложить два варианта:
1) Используешь флаг MULTILINE и пишешь регулярку для каждой возможной строки. К примеру, эта регулярка для комментариев /** и /*. Для // сам можешь написать.
Возможно, я написал какое-то извращение, т.к. недолго изучаю регулярные выражения Добавлено через 35 минут А конкретно по твоему коду. 25 строка - жесть, как мне кажется. Почитай экранирование, квантификаторы и тд.
1
|
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
|
||||||
24.09.2016, 19:06 [ТС] | 4 | |||||
striker24, Ну я сделал старым, дедовским ( костыльным ) методом
Кликните здесь для просмотра всего текста
0
|
31 / 31 / 12
Регистрация: 25.07.2015
Сообщений: 120
|
|
24.09.2016, 19:31 | 5 |
Armatus, так, давай все-таки пойдем человеческим путём и не будем привыкать к костылям
1) Берешь любой исходник .java с комментариями. Считываешь его в какой нибудь StringBuilder. Как это делается написано в интернете на каждом углу. 2) Создаешь Matcher с шаблоном regex, соответствующим комментарию. Можешь использовать предложенные мной способы или что нибудь свое. 3) Ищешь в StringBuilder'е комментарии методом find(). Пока он истин, выводишь на консоль или пишешь в файл. Как угодно. В итоге: кода меньше, код красивее и понятнее, один Pattern и Matcher. Большего не надо Добавлено через 8 минут Update. Поучиться регуляркам можешь прямо в IDE. Там можно открыть текстовый файл и осуществить поиск при помощи рег. выражения. Аналогичное можно сделать в каком-нибудь Notepad++ или тут.
0
|
56 / 56 / 44
Регистрация: 24.03.2016
Сообщений: 378
|
|
24.09.2016, 19:36 [ТС] | 6 |
striker24, сайт крутой, спасибо!
0
|
1099 / 661 / 397
Регистрация: 07.11.2015
Сообщений: 1,062
|
||||||
27.09.2016, 13:29 | 7 | |||||
А если встретится что-то вроде var = "*/*/*/*/*";
Нужно аккуратно пропустить содержимое в кавычках т.к. там могут быть экранированные символы. Код
(?: [^/'"]+ | " (?: [^"\\]+ | \\. )*+ " | ' (?: [^'\\]+ | \\. )*+ ' | / (?! [/*] ) )*+ ( //.* | /\*(?s).*?\*/ )
1
|
27.09.2016, 13:29 | |
27.09.2016, 13:29 | |
Помогаю со студенческими работами здесь
7
Составить регулярное выражение удаления комментариев в javasctipt вставках Изменить регулярное выражение в готовом коде Поиск комментариев в коде C# Регулярное выражение, IP, поиск в строке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |