Как я соответствую unicode символам в Java

Я пытаюсь соответствовать unicode символам в Java.

Входная строка: informa

Строка для соответствия: informátion

До сих пор я попробовал это:

Pattern p= Pattern.compile("informa[\u0000-\uffff].*", (Pattern.UNICODE_CASE|Pattern.CANON_EQ|Pattern.CASE_INSENSITIVE));
    String s = "informátion";
    Matcher m = p.matcher(s);
    if(m.matches()){
        System.out.println("Match!");
    }else{
        System.out.println("No match");
    }

Это выходит как "Никакое соответствие". Какие-либо идеи?

8
задан kennytm 23 June 2010 в 16:07
поделиться

2 ответа

Термин "символы Юникода" недостаточно конкретен. Он будет соответствовать каждому символу, который находится в диапазоне Unicode, таким образом, также и "обычным" символам. Однако этот термин очень часто используется, когда на самом деле имеются в виду "символы, не входящие в печатаемый диапазон ASCII".

В терминах regex это будет [^\x20-\x7E].

boolean containsNonPrintableASCIIChars = string.matches(".*[^\\x20-\\x7E].*");

В зависимости от того, что вы хотите сделать с этой информацией, вот несколько полезных последующих ответов:

12
ответ дан 5 December 2019 в 08:50
поделиться

Это потому, что информация вообще не является подстрокой информации ?

Как бы работал ваш код, если бы вы удалили последний из информация в вашем регулярном выражении?

6
ответ дан 5 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: