将string转换为正则expression式ruby
我需要像“/ [\ w \ s] + /”string转换为正则expression式。
"/[\w\s]+/" => /[\w\s]+/  我尝试使用不同的Regexp方法,如: 
  Regexp.new("/[\w\s]+/") => /\/[w ]+\// ,类似于Regexp.compile和Regexp.escape 。 但是他们没有一个像我期望的那样回报。 
进一步,我尝试删除反斜杠:
  Regexp.new("[\w\s]+") => /[w ]+/但没有运气。 
然后,我试图做到这一点:
 str = "[\w\s]+" => "[w ]+" 
它逃脱了。 现在,string如何保持原样并转换为正则expression式对象?
看起来像这里你需要初始string在单引号(请参阅此页 )
 >> str = '[\w\s]+' => "[\\w\\s]+" >> Regexp.new str => /[\w\s]+/ 
要清楚
  /#{Regexp.quote(your_string_variable)}/ 
也在工作
编辑:包裹your_string_variable Regexp.quote,为了正确。
这个方法将安全地转义所有具有特殊含义的字符:
 /#{Regexp.quote(your_string)}/ 
 例如. 将会逃脱,因为它被解释为“任何angular色”。 
请记住使用单引号的string,除非您想要经常插入string,反斜杠有特殊意义。
使用%符号:
 %r{\w+}m => /\w+/m 
要么
 regex_string = '\W+' %r[#{regex_string}] 
从帮助 :
%r []插值正则expression式(标志可以在closures分隔符之后出现)
gem to_regexp可以完成这项工作。
 "/[\w\s]+/".to_regexp => /[\w\s]+/ 
你也可以使用修饰符:
 '/foo/i'.to_regexp => /foo/i 
最后,你可以更懒惰地使用:detect
 'foo'.to_regexp(detect: true) #=> /foo/ 'foo\b'.to_regexp(detect: true) #=> %r{foo\\b} '/foo\b/'.to_regexp(detect: true) #=> %r{foo\b} 'foo\b/'.to_regexp(detect: true) #=> %r{foo\\b/}