Ruby 使用正则表达式获取哈希值

Ruby 使用正则表达式获取哈希值,ruby,regex,Ruby,Regex,我有一个像这样的杂烩 hash_variable = {"74"=> {"x"=>{"order_id"=>"3643731"}, "x"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}} 注:“x”->1..n来自每个索引 如果detail\u id为nil,我想拒绝哈希。我试过使用正则表达式: hash_variable.each do |items| unless items[

我有一个像这样的杂烩

hash_variable = {"74"=> {"x"=>{"order_id"=>"3643731"}, "x"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}
注:
“x”->1..n
来自每个索引

如果
detail\u id
nil
,我想拒绝哈希。我试过使用正则表达式:

hash_variable.each do |items|
  unless items[/(\d+)/][:detail_id].nil?
    p items
  end
end
# => `NoMethodError: undefined method '[]' for nil:NilClass`

我可以使用“x”的regex来获取任何hash have
detail\u id
key吗?如果不是,如果
detail\u id
为零,我如何拒绝哈希?

好的,我已经解决了我的问题

hash_variable = {"74"=> {"0"=>{"order_id"=>"3643731"}, "1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}
hash_variable.each do |key,items|
 p items.select { |k,v| !v['detail_id'].nil? }
end
# {"1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}
根据塔德曼的建议进行更新比上述更好

hash_variable.each do |key,items|
 p items.select { |k,v| v['detail_id'] }
end

您的哈希无效:无法获取两个“x”键。键应该是唯一的
“x”->1..n从每个键的索引来看,它们都是唯一的..你想得到什么?@fl00r它不是无效的,它是多余的。@sawa:没错,它是冗余的,但我可以解决这个问题。抱歉,之前我没有把这个问题放在我的帖子上,所以这会让你成为一个投票人,而不是一个助手。
items.select{k,v | v['detail_id']}
在这里要简洁得多,除非你希望
v['detail_id']
有时字面上是
false