2011-05-11 13 views
9

Todavía estoy desarrollando mis habilidades de expresión regular, así que me estoy apoyando en la comunidad. Digo que quiero refactorizar el código "con Eclipse", pero he usado varios IDE cuyas funciones de búsqueda y reemplazo aceptan expresiones regulares. He creado expresiones generales con éxito para encontrar cosas, pero me pregunto si puedo tomar partes del patrón combinado y usarlo en el valor de reemplazo. Por ejemplo, tengo muchas funciones de prueba nombradas con el siguiente patrón "" testSomeFunction1(), testSomeFunction2(), testAnotherFunction() "Realmente me gustaría que se denominen" test_someFunction1(), test_someFunction2(), test_anotherFunction() "The Find: is" test [AZ] ", pero ¿con qué lo uso para Reemplazar con :?" test_ [az] "literalmente está reemplazando? Quizás, no puedo usar una declaración de expresiones regulares en el reemplazo?Cómo usar expresiones regulares con el código de búsqueda/reemplazo de Eclipse para refactorizar el código

+1

Tengo curiosidad: ya que tienes una suposición sobre lo que tienes que hacer, ¿por qué no lo pruebas en Eclipse? – Sandman

+0

Gracias Sandman. Debería haber sido claro. Ya lo probé y fallé. De ahí el motivo para pedir ayuda. –

+0

¿Ha intentado capturar y retroceder grupos como se muestra en mi respuesta? –

Respuesta

15

For el texto de la muestra que has enviado, la expresión de búsqueda deberá ser test([a-z]*) y la sustitución debe ser test_$1.

Esto hace uso de grupos capturados referenciados por $ii, donde está el índice del grupo capturado (0 es la expresión completa). se mayo También quiero considerar el caso de la cadena de búsqueda ya que el texto como permuteString también coincidirá con la expresión si la búsqueda no distingue entre mayúsculas y minúsculas.

También debe ser capaz de utilizar el contenido de ayuda en los campos de texto del cuadro de diálogo Find/Replace para ver cuáles son las opciones disponibles para las expresiones regulares (una vez que se ha marcado la casilla de Regular expressions) - pulse CTRL +ESPACIO

+0

¡Gracias! Ayuda a conocer realmente los términos para buscar "grupos de referencias retrospectivas" Cuanto más aprendo, más me doy cuenta de lo mucho que no sé. –

+0

De nada. Encontré el [tutorial de expresiones regulares de Java] (http://download.oracle.com/javase/tutorial/essential/regex/) como un buen punto de partida; es específico de Java, por supuesto, pero muchos conceptos son bastante generales. . –

6

Asegúrese de consultar el operador de expresión regular \ C, que creo que es específico de Eclipse. Se ahorra mucho trabajo al reemplazar la misma palabra en mayúsculas, minúsculas y variantes de camelCase. Por ejemplo, si el texto original es:

SomeObject someObject = SOMEOBJECT; 

luego hacer un "Reemplazar todo", reemplazando

someObject 

con

\CanotherObject 

le conseguirá:

AnotherObject anotherObject = ANOTHEROBJECT; 

que es probablemente lo que quieres

Cuestiones relacionadas