Надежное регулярное выражение для определения объявлений классов в Java - PullRequest
1 голос
/ 10 марта 2012

Я пытаюсь определить, сколько классов объявлено в файле .java, используя только этот тип файла (не могу скомпилировать и просто считать файлы .class).

Я нашел несколько приемлемых способов сделать это, однако мне не нравится быть неаккуратным в том, что я делаю. Я хотел бы узнать, как сделать это более надежно, то есть учесть дополнительные возможности, подобные этому:

this is actually a block comment with class in it*/
//in line comment that contains class keyword
"string with class in it"

Regex - это что-то очень новое для меня, я только что прошел некоторые уроки, но не могу найти или правильно сформулировать выражение, которое будет соответствовать подобным случаям.

Буду очень признателен за любые идеи и помощь.
Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Формальная грамматика, описывающая язык, была бы очень точным способом сделать это. А еще лучше ... вы можете найти грамматику, уже написанную для языка Java, которую вы уже могли использовать.

http://www.antlr.org/grammar/1152141644268/Java.g

0 голосов
/ 10 марта 2012

Я думаю, что вы можете написать регулярное выражение для этого, хотя это может занять довольно много времени. Если вы хотите быстро освоить регулярные выражения, я рекомендую инструмент RegexBuddy . Просто скопируйте ваш код в редактор инструментов, попробуйте выражение regex и увидите результат почти одновременно. На сайте этого инструмента также есть множество полезных ресурсов и фрагмент кода на языке регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...