Non riesco a trovare una stringa che contiene newline quando la nuova riga viene ottenuta utilizzando %n
nell'oggetto Formatter
o String.format()
. Si prega di dare un'occhiata al seguente programma:L'espressione regolare non corrisponde a newline ottenuta dall'oggetto 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));
}
}
e la sua uscita:
Hallo
next line: true
Hallo
next line: false
cosa sta succedendo qui? Perché la seconda stringa non corrisponde?
La versione di Java è 1.6.0_21.
allora perché il primo match (io sono su Windows) ? – Axel
Inoltre, potresti voler cambiare la parte '[\ r \ n]' in '\ r? \ N' per poter abbinare sia' \ n' che '\ r \ n'. – Keppil
Appena scoperto. Su Windows, il line-end è '\ r \ n'. Il '\ n' in' input1' non è considerato una fine riga e quindi la regex corrisponde. – Axel