2009-03-27 2 views
6

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

Например, найти все JavaDoc фрагменты, которые включают в себя @deprecated:

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

мне удалось получить к выражению /\*\*.*[email protected]*?\*/, но это не удается в некоторых случаях, как:

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

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

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

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

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

ответ

9

Попробуйте один:

/\*\*([^\*]|\*(?!/))*[email protected]*?\*/ 
+0

Это, похоже, выполняет эту работу. Благодарю. –

+0

Я использовал бы (?! /) Вместо [^ /]. В противном случае это не будет соответствовать пробелу перед «@», т. Е. «* @ Устарело». –

+0

Очень хорошая точка :) – Diadistis

0

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

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

+0

Bombe, я просто выбрал строку "@Deprecated", как я мог бы выбрать "бла". Дело не в этом. Кроме того, я не могу использовать внешний инструмент, потому что это выражение должно быть включено в диалог поиска затмений. См. Соответствующий вопрос. –

Смежные вопросы