При использовании CANON_EQ совпадение с регулярными выражениями в классах предопределенных символов завершается неудачно - PullRequest
3 голосов
/ 30 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...