Я добавил код для поддержки канонической эквивалентности Unicode в Regex. Тем не менее, когда я использую предварительно составленный символ и один из символов класса предопределенных символов, таких как \ 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', даже если он используется с опцией канонической эквивалентности для компиляции шаблона регулярного выражения. Что я делаю не так