2009-03-27 10 views
6

Este question me hizo pensar en una expresión regularpara hacer coincidir javadoc comentarios que incluyen algún texto especificado.expresión regular para los fragmentos javadoc emparejan

Por ejemplo, la búsqueda de todos los fragmentos javadoc que incluyen @deprecated:

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

me las arreglo para llegar a la expresión /\*\*.*[email protected]*?\*/ pero esto no funciona en algunos casos como:

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

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

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

donde coincide todo el código del fragmento javadoc hasta el 3er javadoc fragme Nuevo Testamento.

¿Alguien puede dar un regex para esto?

Respuesta

9

prueba este:

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

Esto parece hacer el trabajo. Gracias. –

+0

Usaría (?! /) En lugar de [^ /]. De lo contrario, no coincidirá si falta el espacio antes de la "@", es decir, "* @ deprecated". –

+0

Muy buen punto :) – Diadistis

0

method2() no tiene un comentario de javadoc y, por lo tanto, no está en desuso (aunque el comentario indica que debería ser).

Además, si desea extraer información de los comentarios de javadoc, le recomiendo que consulte la herramienta javadoc y escriba Doclet. Tiene fácil acceso a toda la información del comentario javadoc desde allí.

+0

Bombe, Acabo de elegir la cadena "@deprecated" como se podría haber elegido "bla". Ese no es el punto. Además, no puedo usar una herramienta externa porque esta expresión debe incorporarse en el diálogo de búsqueda de eclipse. Ver la pregunta relacionada. –

Cuestiones relacionadas