2009-09-15 8 views
0

자바 주석의 태그와 일치하는 정규 표현식을 얻으 려하므로 .net 주석으로 바꿀 수 있습니다.주석에서 태그를 일치시키는 Regex

예를 들어 나는이 있습니다

/** 
* 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

@param 및 @throws와 @return을 동일한 작업을 수행하지 않으므로 단일 정규식이 최선의 방법이 아닙니다. Perl 또는 Python으로 스크립팅하면이 작업을 훨씬 쉽게 수행 할 수 있습니다. (이 파이썬의 구문에있는 모든)

말했다되는 것을 이들은 ... 당신의 방법에 당신을 얻어야한다 :

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

전체 코멘트를 얻을 것이다. 이 :

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

은 /// 2로 바뀌면 모든 주석은 .Net 주석으로 바뀝니다.

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

은 PARAM 부를 고정한다

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

대체. 마찬가지로

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

는이 부분을 수정해야 발생

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

대체. 마지막으로,

@return (.*) 

은 @return을 수정해야합니다. (이 줄은 여러 행으로 설정되지 않습니다. [스타는 EOL 문자와 일치하지 않습니다.]

이 모든 내용은 스크립트에 플러그인하거나 다른 편집기를 사용하여 차례로 실행해야합니다.

@pram, @return, @throw 부분에 별표가없는 것을 고려하지 않음에 유의하십시오.

+0

감사합니다. 그래, 내가 하나의 정규식을 사용하려고하지 않았지만 일련의 대체 작업을 수행 할 것입니다. 이것은 내가 시작하는 데 도움이 될 것입니다. 매우 감사. 이제 .NET 구문에만있는 경우 ... :) –

+0

.NET의 정규식 구문이 내 머리 꼭대기에서 떨어져 있다는 사실을 모르겠다. http://www.regular-expressions.info/dotnet.html을 열람하면 (예를 들어, 1) 내 모든 역 참조를 $ 1로 변경하고 .NET의 정규 표현식 클래스 플래그 (RegexOptions.IgnoreCase (? i) 및 RegexOptions.Singleline for (? s))에 대해. 그렇지 않으면 모두 * 작동해야합니다. (아마도 http://regexhero.net/tester/에서 테스트하십시오) –

관련 문제