No puedo hacer coincidir una Cadena que contenga líneas nuevas cuando se obtiene la nueva línea usando %n
en el objeto Formatter
o String.format()
. Por favor, eche un vistazo en el siguiente programa:La expresión regular no coincide con la nueva línea obtenida del objeto Formatter
public class RegExTest {
public static void main(String[] args) {
String input1 = String.format("Hallo\nnext line");
String input2 = String.format("Hallo%nnext line");
String pattern = ".*[\n\r].*";
System.out.println(input1+": "+input1.matches(pattern));
System.out.println(input2+": "+input2.matches(pattern));
}
}
y su salida:
Hallo
next line: true
Hallo
next line: false
lo que está pasando aquí? ¿Por qué la segunda cuerda no coincide?
La versión de Java es 1.6.0_21.
Entonces, ¿por qué la primera un partido (estoy en ventanas) ? – Axel
Además, es posible que desee cambiar la parte '[\ r \ n]' a '\ r? \ N' para poder hacer coincidir tanto' \ n' como '\ r \ n'. – Keppil
Acabo de enterarme. En windows, lineend es '\ r \ n'. El '\ n' en' input1' no se considera un final de línea y, por lo tanto, la expresión regular coincide. – Axel