Unicode tiene quizás 50 espacios
\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000] [\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u16A u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000
y 6 saltos de línea
no solo CRLF, LF, CR, sino también NEL (U + 0085), PS (U + 2029) y LS (U + 2028).
Tal vez podría entender la mayoría de los espacios y PS ("separador de párrafos"), pero ¿para qué sirven "Next Line" y "Line separator"?
Todo parece inventado por un comité muy grande donde todos querían su propio espacio y a los líderes se les concedió un salto de línea cada uno. Pero en serio, ¿cómo lo manejas cuando tu lenguaje de programación no lo admite (o lo hace mal, como Java)?
Pattern.compile2010
método que devuelva expresiones regulares que funcionen según la definición de los últimos años. También son libres de crear un método Pattern.compileLatestUTS
que establezca explícitamente que el significado cambiará de acuerdo con las nuevas especificaciones.