2009-03-27 21 views
6

Diese question hat mich in einem regex denken zum Abgleichen javadoc Kommentare, die einige bestimmten Text enthalten.Regex für passende javadoc Fragmente

Zum Beispiel finden Sie alle javadoc Fragmente, die umfassen @deprecated:

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

Ich schaffe /\*\*.*[email protected]*?\*/ zum Ausdruck zu bekommen, aber dies nicht gelingt in einigen Fällen wie:

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

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

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

wo es passt der gesamte Code aus dem 1. javadoc Fragment bis zum 3. javadoc fragme nt.

Kann jemand dafür eine Regex geben?

Antwort

9

Versuchen Sie diese:

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

Dies scheint die Aufgabe zu erledigen. Vielen Dank. –

+0

würde ich (?! /) Anstelle von [^ /] verwenden. Andernfalls stimmt es nicht überein, wenn das Leerzeichen vor dem "@" fehlt, dh "* @ deprecated". –

+0

Sehr guter Punkt :) – Diadistis

0

method2() hat keinen Javadoc-Kommentar und ist daher nicht veraltet (obwohl der Kommentar besagt, dass es sein sollte).

Wenn Sie Informationen aus den Javadoc-Kommentaren extrahieren möchten, empfehle ich Ihnen, in das javadoc-Tool zu schauen und eine Doclet zu schreiben. Sie haben leichten Zugriff auf alle Informationen aus dem Javadoc-Kommentar von dort.

+0

Bombe, wählte ich nur die Zeichenfolge "@deprecated", wie ich gewählt haben könnte "bla". Das ist nicht der Punkt. Außerdem kann ich kein externes Tool verwenden, da dieser Ausdruck in den Eclipse-Suchdialog integriert werden soll. Siehe die entsprechende Frage. –