Lógicamente, es (pero la lógica es irrelevante cuando las codificaciones de caracteres o las configuraciones regionales están en juego). De acuerdo con¿Es " n" un espacio en blanco vertical, es decir, debería " v" coincidir?
perl -e 'print "\n" =~ /\v/ ? "y\n" : "n\n";'
impresión "y", lo es. De acuerdo con
Pattern.compile("\\v").matcher("\n").matches();
regresar false
en Java, no lo es. Esto no me confunda en absoluto, si no hubiera this posting alegando que
clase Patrón actualizada de Sun para JDK7 tiene una nueva bandera maravillosa, UNICODE_CHARACTER_CLASS, lo que hace que todo funcione bien de nuevo.
Pero estoy usando la versión de Java "1.7.0_07" y la bandera existe y parece no cambiar nada en absoluto. Además, "\ n" no es un recién llegado a Unicode, sino un viejo carácter ASCII, así que realmente no veo cómo puede suceder esta diferencia. Probablemente estoy haciendo algo estúpido, pero no puedo verlo.
Por lo que puedo decir, Unicode no tiene una propiedad vertical en blanco. Es puramente una construcción de Perl que coincide con los siguientes caracteres: U + 000A, U + 000B, U + 000C, U + 000D, U + 0085, U + 2028 y U + 2029.Solo usa una clase de personaje que coincida con esos personajes. – ikegami
@ikegami: Gracioso. Acabo de encontrar [esta lista] (http://unicode.org/Public/UNIDATA/PropList.txt) acordando con usted. – maaartinus
Esta pregunta se ha agregado a [Preguntas frecuentes sobre la expresión regular de desbordamiento de pila] (http://stackoverflow.com/a/22944075/2736496), bajo "Secuencias de escape". – aliteralmind