2009-03-27 17 views
6
question

To dało mi do myślenia w regex dopasowywania javadoc komentarze, które obejmują niektóre określony tekst.Regex do dopasowania fragmentów javadoc

Na przykład znalezienie wszystkich javadoc fragmenty, które zawierają @deprecated:

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

udaje mi się dostać do wyrażenia /\*\*.*[email protected]*?\*/ ale to się nie powiedzie, w niektórych przypadkach, takich jak:

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

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

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

gdzie to pasuje cały kod z fragmentu 1. javadoc, aż do momentu pojawienia się trzeciego fragmentu nt.

Czy ktoś może podać do tego regex?

Odpowiedz

9

Spróbuj tego:

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

Wydaje się, że wykonuje to zadanie. Dzięki. –

+0

Używałbym (?! /) Zamiast [^ /]. W przeciwnym razie nie będzie pasować, jeśli brakuje spacji przed "@", tj. "* @ Przestarzałe". –

+0

Bardzo dobry punkt :) – Diadistis

0

method2() nie ma komentarza javadoc i dlatego nie jest przestarzałe (chociaż w komentarzu jest napisane, że powinno być).

Ponadto, jeśli chcesz wyodrębnić informacje z komentarzy javadoc, polecam zajrzeć do narzędzia javadoc i napisać Doclet. Masz łatwy dostęp do wszystkich informacji z komentarza javadoc.

+0

Bombe, po prostu wybrał ciąg "@deprecated" jak mogłoby wybrałem "bla". Nie o to chodzi. Ponadto nie mogę używać narzędzia zewnętrznego, ponieważ wyrażenie to ma zawierać się w oknie wyszukiwania Eclipse. Zobacz powiązane pytanie. –

Powiązane problemy