Expresión regular para coincidir con caracteres de nueva línea multiplataforma


Mi programa puede aceptar datos que tienen caracteres de nueva línea de \n, \r\n o \r (por ejemplo, estilos Unix, PC o Mac)

¿Cuál es la mejor manera de construir una expresión regular que coincida con cualquiera 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.

Author: hippietrail, 2009-08-26

2 answers

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]+", imagino que hace que mis programas en algún lugar del orden de 0.2% más rápido.

 76
Author: too much php,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-26 01:02:00

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

 3
Author: Diego V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-01 10:17:45