将带修饰符的字符串转换为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