2011-04-08 15 views
5

Estoy tratando de agregar log4j a un software heredado usando eclipse search/replace.¿Cómo se repite el texto con una expresión regular?

La idea es encontrar todas las declaraciones de clase y reemplazarlas por la propia declaración, más la definición del registrador en la siguiente línea.

búsqueda

".*class ([A-Z][a-z]+).*\{" 

reemplazar:

"final static Logger log = Logger.getLogger($1.class);" 

¿Cómo puedo anteponer patrón emparejado (la definición de clase) a la cadena de reemplazo?

+0

Gracias por su respuesta, me salvó un par de horas. Uso ahora "$ 0 \ n \ n \ tfinal Logger Logger estático = Logger.getLogger ($ 1.class);" como reemplazar cadena – stacker

Respuesta

3

Creo que se necesita esto:

búsqueda:

(.*class ([A-Z][a-z]+).*\{) 

reemplazar:.

$1\Rfinal static Logger log = Logger.getLogger($2.class); 
+0

Observe el \ R que crea el salto de línea. Y tal vez le gustaría agregar algunas pestañas \ t para que la declaración del registrador tenga sangría. – janhink

1

Siempre se puede capturar todo el asunto y ponerlo en el grupo de captura interno vive en una segunda referencia inversa.

Encontrar:

(.*class ([A-Z][a-z]+).*\{)

Reemplazar con:

$1 final static Logger log = Logger.getLogger($2.class);

Cuestiones relacionadas