137 votes

Convertir une chaîne en expression régulière ruby

J'ai besoin de convertir la chaîne "/[\w\s]+/" expression régulière.

"/[\w\s]+/" => /[\w\s]+/

J'ai essayé à l'aide de différents Regexp méthodes comme:

Regexp.new("/[\w\s]+/") => /\/[w ]+\//, De même Regexp.compile et Regexp.escape. Mais aucun d'entre eux renvoie comme je m'y attendais.

De plus, j'ai essayé de supprimer les barres obliques inverses

Regexp.new("[\w\s]+") => /[w ]+/ Mais ne pas avoir une chance.

Ensuite, j'ai essayé de le faire tout simplement

str = "[\w\s]+"
=> "[w ]+"

Elle s'échappe. Maintenant, comment pourrait chaîne reste comme elle est, et de le convertir en un objet regexp?

177voto

alony Points 6018

On dirait qu'ici vous avez besoin que la chaîne initiale soit entre guillemets simples (voir cette page )

 >> str = '[\w\s]+'
 => "[\\w\\s]+" 
>> Regexp.new str
 => /[\w\s]+/ 
 

151voto

Sergey Gerasimov Points 858

Pour être clair

   /#{your_string_variable}/
 

travaille aussi

38voto

sandstrom Points 2420

Cette méthode échappera en toute sécurité à tous les caractères ayant une signification spéciale:

 /#{Regexp.quote(your_string_variable)}/
 

Par exemple, . sera échappé, car il est autrement interprété comme "n'importe quel caractère".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X