Regexp.compileはエスケープまではしてくれないのね…
久々にRubyを書いていてハマった。
date = "2007/04/13 12:00:00 +9:00" #=> "2007/04/13 12:00:00 +9:00" %r{#{date}}.match date #=> nil %r{#{Regexp.escape(date)}}.match date #=> #<MatchData:0x10844bc> %r{#{date}} #=> /2007\/04\/13 12:00:00 +9:00/
どうやらスラッシュはエスケープしてくれるので全部エスケープしてくれるものと勘違いしていた模様。Regexp.compileで標準でRegexp.escapeまで書けてくれてもいい気がする。