Я пытаюсь соответствовать 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");
}
Это выходит как "Никакое соответствие". Какие-либо идеи?
Термин "символы Юникода" недостаточно конкретен. Он будет соответствовать каждому символу, который находится в диапазоне Unicode, таким образом, также и "обычным" символам. Однако этот термин очень часто используется, когда на самом деле имеются в виду "символы, не входящие в печатаемый диапазон ASCII".
В терминах regex это будет [^\x20-\x7E]
.
boolean containsNonPrintableASCIIChars = string.matches(".*[^\\x20-\\x7E].*");
В зависимости от того, что вы хотите сделать с этой информацией, вот несколько полезных последующих ответов:
Это потому, что информация
вообще не является подстрокой информации
?
Как бы работал ваш код, если бы вы удалили последний
из информация
в вашем регулярном выражении?