online - regular expression generator for java
¿El método ReplaceAll de String de Java da error de repetición ilegal? (3)
Tengo una cadena y cuando intento ejecutar el método replaceAll , recibo este extraño error:
String str = "something { } , op";
str = str.replaceAll("o", "/n"); // it works fine
str = str.replaceAll("{", "/n"); // does not work
y me sale un error extraño:
Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition {
¿Cómo puedo reemplazar las apariciones de "{" ?
A { es un metacarácter de expresiones regulares utilizado para repeticiones de rango como {min,max} . Para hacer coincidir un literal { necesitas escapar de él precediéndolo con un // :
str = str.replaceAll("//{", "/n"); // does work
Escápalo
str = str.replaceAll("//{", "/n");
Esto es necesario ya que el primer argumento para replaceAll() es una expresión regular , y { tiene un significado especial en las expresiones regulares de Java (es un operador de repetición , de ahí el mensaje de error).
Si realmente pretende reemplazar los caracteres individuales y no las expresiones regulares (que es lo que parece querer hacer aquí), debe usar .replace() , no .replaceAll() . A pesar de su nombre, .replace() reemplazará TODAS las ocurrencias, no solo la primera.
Y en caso de que te preguntes, String implementa CharSequence , así que .replace("{", "/n") funcionará.