¿Qué sucede si necesito delimitar estas cadenas de otras partes de la expresión regular que también son cadenas? ej. eee (ff | gg) eee ¿Tengo que usar paréntesis?
Eric Conner
Ah no importa. Tu actualización lo corrige. El último ejemplo es lo que estaba buscando. ¡Gracias!
Respuestas:
Puedes usar la tubería por sí sola:
"string1|string2"por ejemplo:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|string2", "blah"));Salida:
La razón principal para usar paréntesis es limitar el alcance de las alternativas:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string(1|2)", "blah"));tiene la misma salida. pero si solo haces esto:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|2", "blah"));usted obtiene:
porque ha dicho "cadena1" o "2".
Si no desea capturar esa parte de la expresión, utilice
?::String s = "string1, string2, string3"; System.out.println(s.replaceAll("string(?:1|2)", "blah"));fuente