Eu preciso converter string como "/ [\ w \ s] + /" para expressão regular.
"/[\w\s]+/" => /[\w\s]+/
Tentei usar Regexp
métodos diferentes , como:
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
, da mesma forma Regexp.compile
e Regexp.escape
. Mas nenhum deles retorna como eu esperava.
Além disso, tentei remover as barras invertidas:
Regexp.new("[\w\s]+") => /[w ]+/
Mas não deu sorte.
Então tentei fazer de forma simples:
str = "[\w\s]+"
=> "[w ]+"
Ele escapa. Agora, como a string poderia permanecer como está e ser convertida em um objeto regexp?
ruby
regex
string
ruby-1.9.3
cmthakur
fonte
fonte
/#{your_regex}/#{options}
.options
é um Hash, e Ruby não é tããão dinâmico =)Este método escapará com segurança todos os caracteres com significado especial:
Por exemplo,
.
terá escape, já que é interpretado como 'qualquer caractere'.Lembre-se de usar uma string entre aspas simples, a menos que você queira que a interpolação de string regular seja iniciada, onde a barra invertida tem um significado especial.
fonte
+.
) que seriam interpretados no Regexp."\n"
é uma nova linha, mas'\n'
não é.Usando a notação%:
ou
Da ajuda :
fonte
A gema to_regexp pode fazer o trabalho.
Você também pode usar o modificador:
fonte