【发布时间】:2014-10-21 07:21:59
【问题描述】:
我(非常)是 Ruby 新手,不知道为什么我的 rspec 挂起。我在下面给出的方法中有两个正则表达式。如果我将其中一个注释掉,则 rspec 有效。但如果两者都存在,rspec 会挂起(link to full project, including tests,如果它有助于提供上下文)
示例输入:
pairings= [["Joe Johnson", "Jane Johnson"], ["Sarah Smith", "Bob Jones"]]
期望的输出:
self.valid_pairs?(pairings) => false ... because the last names in the pairings[0] are the same
代码:
def self.valid_pairs?(pairings)
validated_pairings = []
pairings.each do |p|
match1 = /(\w*)\s(\w*)|(\w*)\s(\w*)\s(\w*)/.match(p[0]).to_a
match2 = /(\w*)\s(\w*)|(\w*)\s(\w*)\s(\w*)/.match(p[1]).to_a
if match1.last != match2.last
validated_pairings << p
else
end
end
if validated_pairings == pairings
true
else
false
end
end
【问题讨论】:
-
你的正则表达式没有太多意义,因为它只能匹配一个空格。你能放一个样本数据和你想要的输出吗?
-
我添加了示例输入和所需的输出。我不确定这是否有帮助 - 这是我发布的第一个问题,所以如果我误解了您的要求,请告诉我。
-
我明白了,您要做的是比较姓氏。您需要的正则表达式是获取姓氏