我正在尝试将正则表达式存储在数据库中但是在.sub()中使用它们时它们不起作用,即使直接在.sub()中使用相同的正则表达式作为字符串也是如此。
regex = Class.object.field // Class.object is an active record containing "\w*\s\/\s"
mystring = "first / second"
mystring.sub(/#{regex}/, '')
// => nil
mystring.sub(/\w*\s\/\s/, '')
// => second
任何洞察力都赞赏!
谢谢, 太
编辑以更正类/对象术语(谢谢)&纠正我的第二个例子,因为我在工作正则表达式(剪切和粘贴SNAFU)周围显示#{}。
答案 0 :(得分:1)
回答你的问题:Class.object
并不是什么样的事情。如果它是ActiveRecord,它将无法工作。
修改:您显然找到了problem is Rails escaping the regexp。
ActiveRecord不能直接“包含”您的正则表达式;正则表达式将位于记录的其中一个字段中。在这种情况下,您需要执行regexp = Class.object.field_containing_the_regexp
。
即使不是这种情况,我怀疑问题是你的regexp
不是字符串。您可以使用
puts "My regexp: #{regexp}"
您将在输出中看到的字符串将是用于正则表达式的字符串。
答案 1 :(得分:0)
String不是正则表达式。您必须首先创建一个Regexp对象。
regex = Regexp.new("\w*\s\/\s")
答案 2 :(得分:0)
原来我的正则表达式并不适合所有情况 - \ w没有考虑符号。在检查了rails控制台后,看到screwey逃跑了,我在错误的轨道上走了一半。
感谢您的帮助。