Мне нужно построить анализатор кода, который принимает в качестве входных данных java-файлы, просматривает их построчно и определяет, есть ли в строке java-код и java-комментарий.
Некоторые примеры:
int i++; //this increments i
String yolo = "swag"; /* block comment */
String swag = "yolo"; /* multiline
block comment */
int jim = 46; /** Javadoc */
int funny = 69; /** Multiline
Javadoc */
/* Another comment */ int j = 8;
/** JavaDoc comment */ int k = 2;
Регулярное выражение должно быть в состоянии обнаружить любой из этих шаблонов, мой подход состоял в том, чтобы разделить и победить, так как я не бог регулярного выражения, я подумал, что мог бы сделать другое регулярное выражение, чтобы проверить примеры, которые имеют комментарии после кодаи еще один, который проверяет, есть ли комментарии перед кодом.
Это должно работать только с Java-кодом и любым комментарием, доступным для записи в Java.
Это то, что я до сих пор толькодля того, который проверяет, есть ли код, сопровождаемый комментариями любого типа
Pattern p1 = Pattern.compile("[*&&[^//]&&[^/\\* * \\*/]&&[^/\\*\\* * \\*/]][[//*]&&[&[^/\\\\* * \\\\*/]&&[^/\\\\*\\\\* * \\\\*/]]]");
Логически я вижу это регулярное выражение в том, что оно будет сопоставляться с любой строкой, начинающейся с чего угодно, кроме // комментарияили / * * / comment или комментарий JavaDoc, сопровождаемый любым из этих типов комментариев.
Это, к сожалению, не соответствовало ни одному из примеровЯ дал это
Есть ли что-то не так с регулярным выражением или, возможно, более простой способ подойти к этой проблеме или подход к созданию этого регулярного выражения?