java - 为什么\R 在 Java 8 和 Java 9 之间的正则表达式中表现不同?

标签 java regex unicode java-8 java-9

以下代码可在 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 - 为什么\R 在 Java 8 和 Java 9 之间的正则表达式中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871962/

相关文章:

Java代码小程序错误: java. security.AccessControlException:访问被拒绝("java.io.FilePermission" "MyFile.txt" "read")

java - 请一点正则表达式帮助 - 第 2 部分

c# - 修改 XAML 文件

javascript - javascript中字符类的范围乱序

java - 在onCreate中创建按钮时使用注释单击

java - Spring Data 审核注释 @creationDate 和 @LastModifiedDate 不适用于 mongo @EnableMongoAuditing 的子文档

抛出 NoSuchAlgorithException 的 Java SSL 代码

java - 更改java中字符的小写和大写

php - PHP 中根据 unicode 字符范围将字符串拆分为数组

javascript - 在javascript中将文本转换为Unicode