使用CANON_EQ时预定义的字符类正则表达式匹配失败

时间:2019-04-29 23:11:03

标签: java regex

我添加了代码以在Regex中支持Unicode Canonical Equivalence。但是,当我使用预组合字符和\ 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”。我在做什么错

0 个答案:

没有答案