util pattern online number javatpoint java regex replaceall

pattern - Java regex replaceAll multiline



regex to java (3)

Tengo un problema con replaceAll para una cadena multilínea:

String regex = "//s*///*.*//*/"; String testWorks = " /** this should be replaced **/ just text"; String testIllegal = " /** this should be replaced /n **/ just text"; testWorks.replaceAll(regex, "x"); testIllegal.replaceAll(regex, "x");

Lo anterior funciona para testWorks, pero no para testIllegal !? ¿Por qué es eso y cómo puedo superar esto? Necesito reemplazar algo así como un comentario / * ... * / que abarca múltiples líneas.



El meta caracter coincide con cualquier carácter que no sea nueva línea. Es por eso que su expresión regular no funciona para el caso de múltiples líneas.

Para arreglar esto, reemplace . con [/d/D] que coincide con cualquier carácter, incluida la nueva línea.

Código en acción


Pattern.DOTALL utilizar el indicador Pattern.DOTALL para decir que el punto debe coincidir con las líneas nuevas. p.ej

Pattern.compile(regex, Pattern.DOTALL).matcher(testIllegal).replaceAll("x")

o alternativamente, especifique el indicador en el patrón usando (?s) por ej.

String regex = "(?s)//s*///*.*//*/";