Regex, чтобы соответствовать тегам в комментариях - PullRequest
0 голосов
/ 15 сентября 2009

Я хочу получить регулярное выражение, которое будет соответствовать тегу в комментарии Java, чтобы я мог заменить его комментарием .net.

например, у меня есть это:

/**
* Some method description
* 
* @param paramName Parameter description
*         which may span more than 1 line
* @return return value.
* @throws ExceptionName some exception description
*           again may span more than 1 line.
*/

и я хочу закончить с этим:

///
/// Some method description
/// 
/// <param name="paramName"> Parameter description
///         which may span more than 1 line</param>
/// <returns> return value.</returns>
/// <exception cref="ExceptionName"> some exception description
///           again may span more than 1 line.</exception>
///

Часть, в которой я не уверен, является лучшим способом сопоставления @tag и, возможно, имени после него, а также с тем, как сопоставить внутренний текст, который будет заключен в угловые скобки.

Любые идеи приветствуются.

1 Ответ

1 голос
/ 15 сентября 2009

Одно регулярное выражение - не лучший способ, так как вы не делаете то же самое с @param и @throws vs. @return. Сценарии этого на Perl или Python значительно облегчат эту задачу.

Как говорится, они должны помочь вам ... (Все это в синтаксисе Python) это:

(?i)(?s)(/\*\*.*?\*/) 

получит весь комментарий. Это:

^(/\*\*|\*/|\*)(.*)$

с заменой на /// \ 2 превратит все ваши комментарии в комментарии .Net комментариев.

(?i)(?s)(^([^@]+)@param (\b.*\b)(.*?)(?!\* @return) 

заменено на

(\1<param name="\2">\3</param>) 

должен исправить часть параметра. Аналогично,

(?i)(?s)(^([^@]+)@throws (\b.*\b)(.*?)(?!\*/) 

заменено на

(\1<exception cref="\2">\3</param>) 

должен исправить часть бросков. Наконец,

@return (.*)

заменено на \ 1 должно исправить @return. (Обратите внимание, что это не установлено как многострочный [Звезда не соответствует символам EOL])

Все это необходимо подключить к сценарию (или запустить, один за другим в выбранном вами редакторе).

Обратите внимание, что они не пытаются учесть какие-либо случайные звезды в ваших порциях @pram, @return, @throw.

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