我在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',即使使用规范等价选项来编译正则表达式模式。我做错了什么
1条答案
按热度按时间ws51t4hk1#
这个问题在Java 9中得到了解决。
你可以试试:
https://www.tutorialspoint.com/compile_java8_online.php
https://www.tutorialspoint.com/online_java_compiler.php