Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将带修饰符的字符串转换为Ruby正则表达式_Ruby_Regex - Fatal编程技术网

将带修饰符的字符串转换为Ruby正则表达式

将带修饰符的字符串转换为Ruby正则表达式,ruby,regex,Ruby,Regex,如何将字符串“/rusia/i”转换为正则表达式/rusia/i 我知道Regexp.new str和/#{str}/,但这在修饰符的情况下不起作用 s = "/russia/i" Regexp.new(s[1..s.rindex('/') - 1],s[-1]) # => /russia/i 或 或 我喜欢这个解决方案 str = "/russia/i" re = Regexp.new *str.split('/').slice(1,2) # => /russia/i 如果您可

如何将字符串
“/rusia/i”
转换为正则表达式
/rusia/i

我知道
Regexp.new str
/#{str}/
,但这在修饰符的情况下不起作用

s = "/russia/i"
Regexp.new(s[1..s.rindex('/') - 1],s[-1]) # => /russia/i

我喜欢这个解决方案

str = "/russia/i"
re = Regexp.new *str.split('/').slice(1,2)
# => /russia/i

如果您可以信任您的输入:

str = "/russia/i"
re = eval(str) # => /russia/i

我们在同一页上!!:)前两个不是假设修饰符总是
i
尽管如此吗?@AndrewMarshall你是对的,但这就是我得出最后一个(更好)解决方案的方法。因此没有删除它们。:)+1这是
eval
的一个好方法。我通常不太喜欢它,但它是直截了当的,非常清晰且易于维护。与往常一样,关于使用
eval
和用户可能提供的字符串的警告也适用。
str = "/russia/i"
re = Regexp.new *str.split('/').slice(1,2)
# => /russia/i
str = "/russia/i"
re = eval(str) # => /russia/i