我的代码将收到一个包含正则表达式的字符串表示形式的参数。字符串很可能像"/whatever/"
一样,在开头和结尾都有斜杠。给定一个字符串,
str = "/^foo.*bar$/"
我想从该字符串创建一个正则表达式。
当我这样做时:
pat = Regexp.new(str)
# => /\/^foo.*bar$\//
pat.match "foolishrebar"
# => nil
所有特殊字符均被引用。我还没有弄清楚如何不引用字符串。
当我直接使用/pattern/
创建模式时,它可以正常工作。
pat = /^foo.*bar$/
pat.match "foolishrebar"
# => #<MatchData "foolishrebar">
答案 0 :(得分:4)
使用Regexp.new
时,请勿以/
开头和结尾。只要让str = '^foo.*bar$'
。唯一可以逃脱的是开始斜杠和结束斜杠。元字符很好。
答案 1 :(得分:0)
str = '^foo.*bar$'
r = /#{str}/
#=> /^foo.*bar$/
"foolishly, the concrete guy didn't use rebar".match?(r)
#=> true