 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Searching a Hash with Regular Expressions | ||
|---|---|---|
| Code | Expected | Actual | 
| h = { "apple tree" => "plant", "ficus" => "plant", 
      "shrew" => "animal", "plesiosaur" => "animal" }
h.keys.grep /p/                  | ["apple tree", "plesiosaur"] | ["apple tree", "plesiosaur"] | 
| h.inject([]) { |res, kv| res << kv if kv[1] =~ /p/; res } | [["ficus", "plant"], ["apple tree", "plant"]] | [["ficus", "plant"], ["apple tree", "plant"]] | 
| class Hash
  def grep(pattern)
    inject([]) do |res, kv| 
      res << kv if kv[0] =~ pattern or kv[1] =~ pattern
      res
    end
  end
end
h.grep(/pl/)           | [["ficus", "plant"], ["apple tree", "plant"], ["plesiosaur", "animal"]] | [["ficus", "plant"], ["apple tree", "plant"], ["plesiosaur", "animal"]] | 
| h.grep(/plant/) | [["ficus", "plant"], ["apple tree", "plant"]] | [["ficus", "plant"], ["apple tree", "plant"]] | 
| h.grep(/i.*u/) | [["ficus", "plant"], ["plesiosaur", "animal"]] | [["ficus", "plant"], ["plesiosaur", "animal"]] | 
| res = []
h.each_key { |k| res << k if k =~ /p/ }
res | ["apple tree", "plesiosaur"] | ["apple tree", "plesiosaur"] |