Unicode tem talvez 50 espaços
\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000] [\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u0085 \ u00A \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000
e 6 quebras de linha
não apenas CRLF, LF, CR, mas também NEL (U + 0085), PS (U + 2029) e LS (U + 2028).
Talvez eu possa entender a maioria dos espaços e PS ("Separador de parágrafos"), mas para que servem "Next Line" e "Line separator"?
Tudo parece inventado por um comitê muito grande, onde todos queriam seu próprio espaço e os líderes recebiam uma quebra de linha cada. Mas, falando sério, como você lida com isso quando sua linguagem de programação não a suporta (ou faz errado como, por exemplo, Java)?
Pattern.compile2010
método que retorne expressões regulares que funcionem de acordo com a definição dos últimos anos. Eles também são livres para criar um métodoPattern.compileLatestUTS
que declararia explicitamente que o significado mudaria de acordo com a nova especificação.Respostas:
A NEXT LINE (U + 0085) é frequentemente usada como o caractere de nova linha nos sistemas EBCDIC (como 0x15). É como CR + LF, mas como um personagem.
O LINE SEPARATOR (U + 2028) e o PARAGRAPH SEPARATOR (U + 2029) são explicados na seção 5.8 do padrão Unicode , que os descreve como uma versão em texto sem formatação do HTML
<br>
e<p>
, para desambiguar essas funções da "nova linha". Mas, na prática, esses personagens não se acostumam muito.fonte