다음 코드는 Java 8 & 9 모두에서 컴파일되지만 다르게 동작합니다.왜 R은 Java 8과 Java 9 사이의 정규식에서 다르게 동작합니까?
Chunk :
En un lugar
de la Mancha
de cuyo nombre
no quiero acordarme
을하지만 자바 9을 실행하면 출력은 다르다 :
class Simple {
static String sample = "\nEn un lugar\r\nde la Mancha\nde cuyo nombre\r\nno quiero acordarme";
public static void main(String args[]){
String[] chunks = sample.split("\\R\\R");
for (String chunk: chunks) {
System.out.println("Chunk : "+chunk);
}
}
}
내가 자바 8을 실행하면 반환
Chunk :
En un lugar
Chunk : de la Mancha
de cuyo nombre
Chunk : no quiero acordarme
이유는 무엇입니까?
Java 8에서와 같이 보입니다. 'R'은 욕심이 많지만 9에서는 그렇지 않습니다. – doublep
'System.getProperty ("line.separator")'에서 얻은 문자열은 무엇입니까? – dasblinkenlight
@ dasblinkenlight : 그건 중요하지 않아요. '\ R'는 [linebreak matcher] (https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html)입니다. 그것은 OP가 가지고있는 것은 무엇이든 일치 할 것입니다. – Makoto