regular online matches for examples example java regex string replaceall

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á.