регулярное выражение, чтобы найти без комментариев println - PullRequest
4 голосов
/ 21 марта 2011

Может ли кто-нибудь поделиться регулярным выражением, которое находит все не двойные косые комментарии println в коде Java?

Пример:

System.out.println("MATCH")   /*this line match*/
//    System.out.println("DOESN'T MATCH")  /*this line doesn't match*/

(я использую это регулярное выражение в диалоге поиска броска затмения)

Ответы [ 2 ]

8 голосов
/ 21 марта 2011

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

Следующее регулярное выражение соответствует одной строке с System.out.print в нем, without // или /* перед ним (в той же строке!).

(?m)^((?!//|/\*).)*System\.out\.print.*

или просто:

(?m)^[ \t]*System\.out\.print.*

, который затем можно заменитьс помощью:

//$0

, чтобы прокомментировать его.

Еще раз: это пойдет не так с многострочными комментариями, и, как упомянул Коби, например, /* // */ System.out.print..., чтобы назвать только два из множества случаевэто регулярное выражение сработает.

Также рассмотрите строку:

System.out.println("..."); /*
comments
*/

, которую вы не хотите заканчивать:

//System.out.println("..."); /*
comments
*/
0 голосов
/ 21 марта 2011

Вы могли бы просто сделать что-то простое, как:

^[ \t]*[^/][^/].*println.*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...