У меня есть шаблон регулярных выражений Java и предложение, которое я хотел бы полностью сопоставить, но для некоторых предложений оно ошибочно завершается неудачей. Почему это? (для простоты я не буду использовать свое сложное регулярное выражение, а просто ". *")
System.out.println(Pattern.matches(".*", "asdf"));
System.out.println(Pattern.matches(".*", "[11:04:34] <@Aimbotter> 1 more thing"));
System.out.println(Pattern.matches(".*", "[11:04:35] <@Aimbotter> Dialogue: 0,0:00:00.00,0:00:00.00,Default,{Orginal LV,0000,0000,0000,,[???]??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????} "));
System.out.println(Pattern.matches(".*", "[11:04:35] <@Aimbotter> Dialogue: 0,0:00:00.00,0:00:00.00,Default,{Orginal LV,0000,0000,0000,,[???]????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????} "));
Выход:
true
true
true
false
Обратите внимание, что четвертое предложение содержит 10 управляющих символов Юникода \ u0085 между знаками вопроса, которые не отображаются обычными шрифтами. Третье и четвертое предложения на самом деле содержат одинаковое количество символов!