我添加了代码以在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”。我在做什么错