Tengo un patrón de expresiones regulares de Java y una oración que me gustaría combinar por completo, pero para algunas oraciones falla erróneamente. ¿Por qué es esto? (Para simplificar, no voy a utilizar mi complejo de expresiones regulares, pero sólo "*.")Java regex siempre falla
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,,[???]????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????} "));
Salida:
true
true
true
false
Tenga en cuenta que la cuarta frase contiene 10 caracteres de control Unicode \ u0085 en el medio los signos de interrogación, que no se muestran con fuentes normales. ¡Las oraciones tercera y cuarta en realidad contienen la misma cantidad de caracteres!
Esto es especialmente extraño, porque Java es un motor de expresiones regulares Unicode ... –
Sería peor si Java no sabría de las terminaciones de línea Unicode (http://www.fileformat.info/info/unicode/char /85/index.htm) – rurouni
... @ tchrist pronto estará cerca y cuéntanos sobre qué tan roto está el motor de regex de Java. – aioobe