我在这里得到了这个小东西:
def get_articles
@articles = []
Doc.column_names.each do |a|
if a.match(/^article/)
@articles << a
end
end
end
但它会返回许多不需要的结果。我将如何放弃以特定字符串(例如_body
)返回结果的结果?
干杯!
答案 0 :(得分:1)
怎么样:
if a.match(/^article/) and !a.match(/_body$/)
顺便提一下,您的方法可以重写为more compactly):
def get_articles
@articles = Doc.column_names.select { |a| a.match(/^article/) && !a.match(/_body$/) }
end
您也可以将双重匹配替换为包含zero-width negative look-behind assertion的单个匹配,但对于大多数人来说,它的可读性较低(尽管在快速和肮脏的测试中速度提高约2倍):
def get_articles
@articles = Doc.column_names.select { |a| a.match(/^article.*(?<!_body)$/) }
end