2011-10-03 20 views
9

Entonces, si quiero reemplazar b [algo aquí] en una cadena con f [lo mismo aquí] ¿cómo lo haría? Ejemplo: ¿Qué es una expresión regular que haría foobarfoo para foofarfofo, y foobanfoo foofanfoo?Expresión regular reemplazar pero mantener parte de la cadena

+0

encontré un excelente artículo con tutoriales aquí http://www.vogella.de/articles/JavaRegularExpressions/article.html si conoce la marca que desea reemplazar y su ubicación en la cadena, esto no debería ser demasiado complicado desde lo que puedo ver –

+2

¿Hay alguna restricción adicional que no está divulgando, o simplemente no pensó en reemplazar "b" por "f"? Correctamente hablando, las expresiones regulares solo coinciden con las cadenas; el reemplazo no es una característica de expresiones regulares. – tripleee

Respuesta

12

El principio básico aquí es un "grupo de captura":

String output = input.replaceAll("foob(..)foo", "foof$1foo"); 

Ponga la parte de interés dentro de paréntesis en la expresión regular. A continuación, puede hacer referencia a su número de grupo en replacement text, o mediante el método Matcher.group().

+0

Gracias ... ¿Coincidirá con una secuencia de cualquier longitud, o solo 2 caracteres? –

+0

Para aclarar, esto convertirá "foobarfoo" en "foofarfoo" ¿verdad? – corsiKa

+0

@ Tj3 Creo que querrías '" (. *) "' Si quieres cualquier longitud. '" (..) "' coincidirá exactamente con dos. – corsiKa

Cuestiones relacionadas