2011-03-22 20 views
7

Quiero darles a los usuarios un área de texto donde puedan ingresar texto. Luego compararé esa entrada con una entrada diferente y la extraeré si coinciden.Entrada de usuario + Ruby + Regex?

flujo:

  • usuario introduce texto con retornos en un área de texto
  • texto se guarda en la base de datos en un campo de texto

Entonces la siguiente manera para extraer:

text_reply = text_reply.sub(/#{user.text_to_extract}/m, '').strip 

El problema es que parece que los caracteres tienen gusto de nuevas líneas o tuberías | lo están rompiendo Como entrada con la que queremos hacer coincidir puede verse así:

XXXXXX 

XXXXXX 
XXXX & XXXXX 
asdasd: 123312321 | dasasddsadasads 

http://yahoo.com 

Sugerencias? Thansk

+0

¿Una cadena simple de reemplazo no funciona? – Dogbert

Respuesta

13

que necesita para escapar de la entrada: http://www.ruby-doc.org/core/classes/Regexp.html

Véase el método escape.

Regexp.escape(your_input) 
+0

Gracias, pero ¿cómo puedo escapar cuando hago inputtext.split (regex_to_use) .first? – AnApprentice

+0

Hace lo mismo con la expresión regular si está tomando entrada de usuario/cadena para la expresión regular. Utilice Regex.escape para cualquier cadena que pueda tener caracteres especiales de expresiones regulares que no desee interpretar como tal por el motor de expresiones regulares. –

+0

Correcto, pero ¿cómo? thx – AnApprentice