使用CANON_EQ时预定义字符类regex匹配失败

qq24tv8q  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(110)

我在Regex中添加了支持Unicode规范等价的代码。然而,当我使用预组合字符和预定义字符类中的一个字符(如\s)时,匹配似乎失败了。

import java.util.*;
import java.lang.*;
import java.util.regex.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Pattern withCE = Pattern.compile("^a\u030A\\sx$",Pattern.CANON_EQ);
        Pattern withoutCE = Pattern.compile("^a\u030A\\sx$");
        String inputWithCE = "\u00E5 x";
        String inputWithoutCE = "a\u030A x";

        System.out.println("Matches with canon eq: " + withCE.matcher(inputWithCE).matches());
        System.out.println("Matches without canon eq: " + withoutCE.matcher(inputWithoutCE).matches());
    }
}

输出为:

Matches with canon eq: false
Matches without canon eq: true

试试这里:https://ideone.com/vBzzL2
我期望的结果是'true',即使使用规范等价选项来编译正则表达式模式。我做错了什么

ws51t4hk

ws51t4hk1#

这个问题在Java 9中得到了解决。
你可以试试:
https://www.tutorialspoint.com/compile_java8_online.php

Matches with canon eq: false
Matches without canon eq: true

https://www.tutorialspoint.com/online_java_compiler.php

Matches with canon eq: true
Matches without canon eq: true

相关问题