放入对象时正则表达式不起作用

时间:2010-08-27 07:21:14

标签: ruby-on-rails ruby regex

我正在尝试将正则表达式存储在数据库中但是在.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)周围显示#{}。

3 个答案:

答案 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逃跑了,我在错误的轨道上走了一半。

感谢您的帮助。