2012-02-02 23 views
6

utilizo la siguiente expresión regular para hacer nuevas líneas
tags:Regex para despojar r n o r n

str.gsub("\r\n", '<br>') 

Esto funciona bien en un escritorio. en un texto de iphone solo tiene \ n, no tiene el \ r.

¿Cómo puedo hacer la compatibilidad con expresiones regulares? \ r \ n o simplemente \ n?

Gracias

+1

no sé Ruby, pero lo normal es str.gsub ("\ r? \ N", '
'). Intentalo. – Cheery

+0

Gracias, lo intenté pero no funcionó. str = str.gsub ("\ r? \ n", '
') nada tenía una etiqueta br – AnApprentice

Respuesta

8

\r\n|\r|\n

Esa expresión regular también le permitirá apoyar Macs, que utilizan \r solo como un final de línea. Dado que las expresiones regulares son codiciosas, coincidirán con \r\n, a diferencia de las individuales, si es posible.

+0

Eso no funcionó? str = str.gsub ("\ r \ n | \ r | \ n", '
') – AnApprentice

+0

Tengo que trabajar un poco con ... pero ahora tiene 2 BR ... ¿Solo quiero uno? str = str.gsub (/ \ r \ n | \ r | \ n /, '
') – AnApprentice

+0

Hmm, eso es extraño. Bueno, tal vez sea más confiable si primero llama a replace con '\ r \ n', luego llámelo de nuevo con' \ r | \ n', solo para evitar la confusión de expresiones regulares. Gracias –

1

el operador ? aceptará 0 o uno de los elemento precedente por lo \r?\n debe aceptar \r or \n or \r\n

+0

Eso no funcionó. tampoco están haciendo juego ahora? str = str.gsub ("\ r? \ n", '
') – AnApprentice

+0

¿El? necesita ir después del \ n. En este caso, debe ir después del término que califica/limita. Tal como está, está calificando el '\ r'. Esto funciona para mí: 'str = str.gsub (/ \ r (\ n)? /, '
')' – aenw

12

creo

str.gsub(/\r?\n/, '<br>') 

debe hacer el trabajo

+0

pero que no funcionó: str = str.gsub ("/ \ r \ n /?", '
') – AnApprentice

+1

@AnApprentice lo escribió con paréntesis y expresión regular debe ser sin ellos - Acabo de comprobar la sintaxis de Ruby – Cheery

+1

No utilice comillas dobles (") para el primer parámetro. – barley

0

\r?\n|\r

\r?\n coincidirá \n o \r\n.

\r coincidirá solo \r.

Esto debería funcionar para Windows \ Mac \ Linux EOL.

1

Esta es probablemente la manera más fácil:

str.gsub(/\R/, '<br>') 

/\R/ obras para Mac/Linux/Windows e incluye saltos de línea Unicode más exóticos.

+1

¡Gracias! También es más fácil de recordar y más robusto. –

Cuestiones relacionadas