У меня есть шаблон регулярного выражения 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 управляющих символов Unicode\u0085 между вопросительными знаками, которые не отображаются обычными шрифтами. Третье и четвертое предложения фактически содержат одинаковое количество символов!