我有一组正则表达式,存储在数据库的某个表中。我检索它们并使用这些正则表达式应用一些操作,但它们没有按预期工作。
junkremoveregex=[]
regexes = JunkRemoveLineRegex.find(:all,:select => 'regex')
regexes.each do |regex|
junkremoveregex << regex.regex
end
puts junkremoveregex
junktest=/note/
junkremoveregexset=Regexp.union(junkremoveregex)
line ="note thhat yo yo honey singh".downcase
if(line.match(junkremoveregexset))
puts "note was found in line"
else
puts "No line was found"
end
这段代码的输出是没有找到行。
如果我使用这段代码,那么它会完美地工作
junkremoveregex=[]
regexes = JunkRemoveLineRegex.find(:all,:select => 'regex')
regexes.each do |regex|
junkremoveregex << regex.regex
end
puts junkremoveregex
junktest=/note/
junkremoveregexset=Regexp.union(junktest)
line ="note thhat yo yo honey singh".downcase
if(line.match(junkremoveregexset))
puts "note was found in line"
else
puts "No line was found"
end
Puts junkremoveregex 给出/note/
如何解决这个问题?
最佳答案
如 BroiSatse 所述,您的正则表达式以字符串格式出现,您需要先将其转换回正则表达式格式。为此你需要使用这个 gem http://rubygems.org/gems/to_regexp
"/note/".to_regexp
#=> /note/
或者在你的情况下
junkremoveregexset.to_regexp
关于ruby-on-rails - ruby rails : Unable to retrieve regex from database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254542/