Шаблон регулярного выражения с?Character and CharacterSequense содержит символ Unicode - PullRequest
1 голос
/ 03 апреля 2012

Я пытаюсь создать регулярное выражение, совпадающее со строками, состоящими из символов и символов для этого. Я пишу ниже код:

Pattern pattern = Pattern.compile("[a-z\\?]*");
System.out.println(pattern.matcher("*").matches());
System.out.println(pattern.matcher("a").matches());
System.out.println(pattern.matcher("?").matches());
System.out.println(pattern.matcher("汉").matches());

И получаю вывод ниже:

false
true
true
true

Я ожидаюопределенный шаблон не совпадает с "汉" и возвращает false, но, как вы видите, он возвращает true.Кто-нибудь может объяснить причину этого?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Вы уверены, что ваш редактор сохраняет файл с правильной кодировкой? Я пытаюсь сохранить файл теста как UTF-8 или UTF-16, и оба случая возвращают меня: false, true, true, false.

3 голосов
/ 03 апреля 2012

Я только что попытался, и я правильно получаю ложное истинное истинное ложное. Кстати, нет необходимости убегать '?' в скобках. Это просто сделает:

            Pattern pattern = Pattern.compile("[a-z?]*");
    System.out.println(pattern.matcher("*").matches());
    System.out.println(pattern.matcher("a").matches());
    System.out.println(pattern.matcher("?").matches());
    System.out.println(pattern.matcher("汉").matches());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...