문제

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와 일치하는 가장 좋은 방법과 나중에 이름을 다루는 가장 좋은 방법과 각도 괄호 사이에 내부 텍스트를 일치시키는 방법입니다.

모든 아이디어에 감사드립니다.

도움이 되었습니까?

해결책

@param 및 @throws vs. @return과 똑같은 일을하지 않기 때문에 단일 정규식은 전혀 여기에가는 가장 좋은 방법이 아닙니다. Perl 또는 Python에서 이것을 스크립팅하면이 작업이 훨씬 쉬워집니다.

즉, 이것들은 당신을 당신의 길로 데려 가야합니다 ... (이들 모두는 Python 's Syntax에 있습니다) 이것 :

(?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 부분의 길 잃은 별을 설명하려고 시도하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top