Моя цель - найти пакет (в виде строки) исходного файла Java, заданный в виде открытого текста и еще не отсортированный в папках.
Я не могу просто найти первый экземпляр ключевого слова package
в файле, потому что он может появиться внутри комментария. Поэтому я думал о двух альтернативах:
- Сканирование файла слово за словом, сохраняя флаг «внутри комментария» для сканера. При первом обнаружении ключевого слова
package
, не входящего в комментарий, остановите сканирование и сообщите результат.
- Использовать регулярное выражение - должно быть теоретически возможно, потому что в Java нет комментариев к блоку, но я попытался создать такое регулярное выражение, и оно оказалось довольно сложным - по крайней мере для меня.
Другое различие между этими двумя подходами состоит в том, что при сканировании вручную я могу остановить сканирование, когда я могу быть уверен, что ключевое слово package
больше не может появиться, экономя некоторое время ... и я не уверен, что могу что-то сделать похожи с регулярными выражениями. С другой стороны, решение «когда он больше не может появляться» не обязательно просто , хотя я мог бы использовать для этого некоторую эвристику.
Я хотел бы услышать любые отзывы по этой проблеме и был бы рад любой помощи с регулярным выражением. Мое решение написано и на Java.
РЕДАКТИРОВАТЬ: для тех, кто предлагает на самом деле синтаксический анализ файла - это, безусловно, жизнеспособный вариант, спасибо, но я чувствую себя немного излишним для меня, чтобы проанализировать весь файл только для пакета. Я сделаю это, если нет более простой альтернативы.