Necesito convertir cadenas como "/ [\ w \ s] + /" a una expresión regular.
"/[\w\s]+/" => /[\w\s]+/
Intenté usar diferentes Regexp
métodos como:
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
, de manera similar Regexp.compile
y Regexp.escape
. Pero ninguno de ellos regresa como esperaba.
Además, intenté eliminar las barras invertidas:
Regexp.new("[\w\s]+") => /[w ]+/
Pero no tengas suerte.
Luego intenté hacerlo simple:
str = "[\w\s]+"
=> "[w ]+"
Se escapa. Ahora, ¿cómo podría la cadena permanecer como está y convertirse en un objeto regexp?
ruby
regex
string
ruby-1.9.3
cmthakur
fuente
fuente
/#{your_regex}/#{options}
.options
es un hash, y Ruby no es tan dinámico =)Este método escapará de forma segura todos los caracteres con un significado especial:
Por ejemplo,
.
se escapará, ya que de lo contrario se interpretará como 'cualquier carácter'.Recuerde usar una cadena entre comillas simples a menos que desee que se active la interpolación de cadena regular, donde la barra invertida tiene un significado especial.
fuente
+.
) que se interpretarían en Regexp."\n"
es una nueva línea pero'\n'
no lo es.Usando la notación%:
o
De ayuda :
fuente
La gema to_regexp puede hacer el trabajo.
También puedes usar el modificador:
fuente