将字符串中的正则表达式转换为ruby中的regexp对象

Dip*_*pil 2 ruby regex ruby-on-rails ruby-on-rails-3

我将一个正则表达式作为用户的输入,并将值与该正则表达式匹配.但是,我遇到的问题是我收到的输入是一个字符串.例如"/abc|def/i" ,我无法将其转换为正则表达式对象.如果它尝试Regexp.new(string) 它逃脱所有的角色所以我得到类似的东西/\/abc|def\/i/

我能够使用另一个正则表达式捕获正斜杠之间的部分,并使用它构建一个正则表达式对象.对于上面的例子,我捕获"abc|def",当我做Regexp.new("abc|def")我得到的/abc|def/是我想要的但我需要一种方法来在字符串中将正则表达式选项(例如上面的例子中的'i')添加到ruby regexp对象.

我怎么能实现这个???

此外,必须有一种更简单的方法来实现所有这一切.任何帮助将不胜感激.

Dyl*_*kow 5

您可以考虑使用to_regexp gem ; 它不使用eval,它将允许你这样做:

 "/(abc|def)/i".to_regexp
 # => /(abc|def)/i
Run Code Online (Sandbox Code Playgroud)

来源:https://github.com/seamusabshere/to_regexp


Soh*_*han 5

这是一个快速的方法 /#{my_string_pattern}/

不需要魔法