Регулярное выражение для сопоставления фрагментов Javadoc - PullRequest
7 голосов
/ 27 марта 2009

Этот вопрос заставил меня задуматься в регулярном выражении о совпадении javadoc комментариев, включающих некоторый указанный текст.

Например, поиск всех javadoc фрагментов, включающих @deprecated:

/**
* Method1
* .....
* @deprecated
* @return
*/

Мне удается добраться до выражения /\*\*.*?@deprecated.*?\*/, но в некоторых случаях это не удается, например:

/**
* Method1
* .....
* @return
*/
public int Method1() { } 

// this method should be @deprecated
public void Method2() { }    

/**
* Method3
* .....
* @return
*/
public int Method3() { } 

, где он соответствует всему коду от 1-го javadoc фрагмента до 3-го javadoc фрагмента.

Может ли кто-нибудь дать регулярное выражение для этого?

Ответы [ 2 ]

10 голосов
/ 27 марта 2009

Попробуйте это:

/\*\*([^\*]|\*(?!/))*?@deprecated.*?\*/
0 голосов
/ 27 марта 2009

method2 () не имеет комментария javadoc и поэтому не считается устаревшим (хотя в комментарии говорится, что так и должно быть).

Кроме того, если вы хотите извлечь информацию из комментариев Javadoc, я рекомендую изучить инструмент Javadoc и написать Doclet . У вас есть легкий доступ ко всей информации из комментария Javadoc оттуда.

...