Rubyリファレンス: Home

grep (Enumerable)

Edit   History

標準クラス・モジュール > Enumerable > grep

enum.grep(obj)

grepメソッドは、各要素に対して「引数obj === 要素」を試し、その結果が真だった要素を集めて配列にして返します。

Regexpクラスの===は正規表現のマッチです。引数を正規表現にすると、パターンにマッチする文字列を集められます。次の例は、配列の中から半角アルファベットだけの文字列を集めます。

arr = ["cat", 123, "#dog", "mouse"]
p arr.grep(/\A[A-Za-z]+\Z/)
["cat", "mouse"]

Moduleクラスの===は、右辺がそのクラスのインスタンスかを調べます。引数をクラスにすると、特定のクラスに属するオブジェクトを集められます。次の例は、配列の中から文字列を集めます。

arr = ["cat", 123, "#dog", "mouse"]
p arr.grep(String)
["cat", "#dog", "mouse"]
enum.grep(obj) {|item| block }

grepメソッドにブロックを渡すと、「引数obj === 要素」が真を返す要素をブロックに渡し、ブロックの戻り値を集めた配列を返します。

次の例は、配列の中から半角アルファベットだけの文字列を集めて大文字に変えます。

arr = ["cat", 123, "#dog", "mouse"]
p arr.grep(/\A[A-Za-z]+\Z/) {|item| item.upcase }
["CAT", "MOUSE"]

関連項目