以下代码可在 Java 8 和 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);
}
}
}
当我使用 Java 8 运行它时,它会返回:
Chunk :
En un lugar
de la Mancha
de cuyo nombre
no quiero acordarme
但是当我用 Java 9 运行它时,输出是不同的:
Chunk :
En un lugar
Chunk : de la Mancha
de cuyo nombre
Chunk : no quiero acordarme
为什么?
最佳答案
这是 Java 8 中的一个错误,已修复:JDK-8176029 : "Linebreak matcher is not equivalent to the pattern as stated in javadoc" .
关于java - 为什么\R 在 Java 8 和 Java 9 之间的正则表达式中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871962/