我需要在regexp的字符串表示和regexp本身之间来回转换。
像这样的:
> Regexp.new "\bword\b|other
=> /\bword\b|other/
但是,这样做会导致/\x08word\x08|other/
有什么方法可以做到这一点吗?

最佳答案

使用单引号,或转义反斜杠。

p re = Regexp.new('\bword\b|other') # => /\bword\b|other/
p re = Regexp.new("\\bword\\b|other")  # => /\bword\b|other/

p re.to_s  # => "(?-mix:\\bword\\b|other)"
p re.inspect # => "/\\bword\\b|other/"

生成的to_s字符串可以用作Regexp.new的参数(正则表达式本身也可以)。

关于ruby - 在String和Regexp之间转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49740644/

10-13 02:15