hacer Compruebe si su motor de expresiones regulares apoya \R
como una clase de caracteres taquigrafía y usted no tendrá que preocuparse por los diferentes combos de nueva línea/avance de línea Unicode. Si se implementa correctamente, puede hacer coincidir todas las terminaciones de líneas ASCII o Unicode de forma transparente con \R
.
En Unicode necesita detectar NEL
(línea de OS/390 que termina, \ x85) LS
(Línea de separación, \ x2028) y PS
(Párrafo separador, \ x2029) si usted quiere ser plataforma completamente cruz en estos días.
Es discutible si LS, NEL y PS deben tratarse como saltos de línea, finales de línea o espacios en blanco. El estándar XML 1.0, por ejemplo, does not recognize NEL como carácter de salto de línea. ECMAScript trata LS
y PS
como saltos de línea pero NEL
como espacios en blanco. Perl unicode regexs tratarán VT
, FF
, CR
, CRLF
, NEL
, LS
y PS
como saltos de línea con el fin de ^
y $
meta caracteres de expresiones regulares.
El Unicode Implementation Guide (sección 5.8 y tabla 5.3) es probablemente la mejor apuesta de lo que es el tratamiento definitivo de lo que es una "nueva línea".
Si sólo está preocupado por ASCII con las variantes clásicas de DOS/Windows/Unix/Mac, la expresión regular equivalente a \R
es (?>\r\n|[\r\n])
En Unicode, el equivalente a \R
es (?>\r\n|\n|\x0b|\f|\r|\x85|\x2028|\x2029)
El \x0b
en que hay una línea vertical lengüeta; una vez más, esto puede o no ajustarse a la definición de lo que es un salto de línea, pero eso coincide con la recomendación de la implantación Unicode. (FF
, o \x0C
no está incluido en la expresión regular, ya que una alimentación de página es una página nueva, no una nueva línea en la definición.)
le gustan-viejo estilo Mac saltos de línea ('\ R'), o únicamente sobre Unix y Windows ('\ n' y '\ r \ n')? –
posible duplicado de [Expresión regular para que coincida con los caracteres de nueva línea de plataforma cruzada] (http://stackoverflow.com/questions/1331815/regular-expression-to-match-cross-platform-newline-characters) – Amarghosh