Ich kann keinen String mit Zeilenvorschübe abgleichen, wenn der Zeilenumbruch mithilfe von %n
in Formatter
Objekt oder String.format()
abgerufen wird. Bitte werfen Sie einen Blick auf das folgende Programm:Regulärer Ausdruck stimmt nicht mit newline überein, die vom Formatter-Objekt erhalten wurde
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));
}
}
und seine Ausgabe:
Hallo
next line: true
Hallo
next line: false
Was ist hier los? Warum stimmt die zweite Zeichenfolge nicht überein?
Java-Version ist 1.6.0_21.
Dann warum das erste Spiel (ich bin Fenster) ? – Axel
Sie können auch den '[\ r \ n]' Part zu '\ r? \ N' wechseln, um sowohl' \ n' als auch '\ r \ n' zu finden. – Keppil
Gerade herausgefunden. Unter Windows ist Zeilenende "\ r \ n". Das '\ n' in' input1' wird nicht als Zeilenende betrachtet und daher stimmt die Regex überein. – Axel