2009-08-26 10 views
42

Mi programa puede aceptar datos que tiene caracteres de nueva línea de \ n \ r \ no \ r (por ejemplo, Unix, PC o estilos de Mac)de expresiones regulares para que coincida con caracteres de nueva línea multiplataforma

¿Cuál es la mejor manera de construir una expresión regular que coincidirá con lo que sea la codificación?

Alternativamente, podría usar el soporte universal_newline en la entrada, pero ahora estoy interesado en ver cuál sería la expresión regular.

+8

Solo tenga en cuenta, '\ r' es el estilo antiguo de Mac (y por" antiguo "me refiero a" OS 9 y anteriores "). Cualquier Mac que ejecute OS X (a.k.a. creado después de 1999) va a usar '\ n' como cualquier otro Unix. –

+0

¿Cuándo es útil para unir líneas nuevas vs. usar ''$'' para unir el final de la línea? – tonfa

+1

@tonfa: al dividir un archivo en líneas a través de regex. –

Respuesta

71

La expresión regular que uso cuando quiero ser preciso es "\r\n?|\n".

Cuando no estoy preocupado por la consistencia o las líneas vacías, uso "[\r\n]+", me imagino que hace mis programas en algún lugar en el orden de 0.2% más rápido.

+3

Por lo general, cuando no estoy preocupado por las nuevas líneas, tampoco me preocupan los espacios. –

+0

¿Qué hace que sus programas sean más rápidos? – sehe

1

El patrón se puede simplificar a \r?\n para obtener una pequeña ganancia de rendimiento, ya que probablemente no tenga que lidiar con el antiguo estilo Mac (OS 9 no está soportado desde febrero de 2002).

Cuestiones relacionadas