使用match和regex仅从哈希中选择数字

时间:2014-03-10 23:05:47

标签: regex arrays hash match

我有一系列哈希看起来像:

[#<CSV::Row name:"Eric" 1:2 2:4 3:1 4:1 5:3 6:2 7:3 8:4 9:1>, 
 #<CSV::Row name:"Sam" 1:3 2:5 3:2 4:1 5:4 6:3 7:5 8:5 9:2>, 
 #<CSV::Row name:"Jason" 1:3 2:1 3:3 4:3 5:2 6:4 7:5 8:3 9:3>, 
 #<CSV::Row name:"Adam" 1:1 2:3 3:3 4:5 5:4 6:2 7:5 8:1 9:3>, 
 #<CSV::Row name:"Faizaan" 1:7 2:12 3:6 4:2 5:7 6:8 7:14 8:21 9:2>, 
 #<CSV::Row name:"Helen" 1:3 2:4 3:1 4:2 5:3 6:2 7:4 8:1 9:2>, 
 #<CSV::Row name:"Dan" 1:2 2:3 3:4 4:2 5:4 6:3 7:2 8:5 9:1>, 
 #<CSV::Row name:"Bill" 1:3 2:4 3:3 4:5 5:6 6:2 7:2 8:3 9:3>, 
 #<CSV::Row name:"Evan" 1:2 2:6 3:2 4:3 5:5 6:4 7:3 8:4 9:3>]
基本上,只有很多关键的价值对。

我正在尝试使用:

choices = golf_tally.each do |match|
  match.select {|key, value| key.match(/\A\d{1,}\z/)}
end

我曾希望只选择每一行的值并将它们放入选择中。但是,此代码返回相同的信息,包括名称。如何使用正则表达式匹配数字键,值对?

1 个答案:

答案 0 :(得分:0)

这将获取数字:数字对前面有空格,后跟空格或'&gt;'炭。

(?!\s)\d+:\d+(?!>[\s\>])