はじめてのRuby!grepメソッドで正規表現に一致する文字列を取得

配列を使っていると、ある条件に一致した要素のみを検索して取得したい場合があります。

「配列から正規表現のパターンにマッチした要素を取得したい」
「配列から特定の型に一致する要素を取得したい」

配列を正規表現にマッチしたパターンの要素のみを取得したい場合は、grepメソッドを使用すると便利です。

ここではそんなgrepメソッドについて、以下の内容で解説していきます。


・grepメソッドとは
・そもそも正規表現とは
・grepメソッドの使い方

grepメソッドについて、わかりやすく解説していますので、ぜひ参考にしてください。

grepメソッドとは

grepメソッドは、引数に指定したオブジェクトと配列の各要素を「オブジェクト === 各要素」で評価し、結果が真の場合の要素を取得して配列として返します

grepメソッドは以下のように記述します。

配列.grep(オブジェクト)

正規表現を指定した場合は、パターンにマッチした要素を取得して返します。

引数には正規表現の他、クラスを指定した場合は一致したクラスに属した要素を取得します。

そもそも正規表現とは

grepメソッドの使い方に入るまえに正規表現についておさらいしておきましょう。

正規表現は主にパターンにマッチした文字列を取得するために使われるもので、あらゆる文字列を検証することができます。

そんな正規表現の基礎の基礎については、以下の記事で詳しく解説しています。

grepメソッドの使い方

正規表現を指定する方法

以下のサンプルでは、grepメソッドの引数に正規表現を指定してパターンにマッチした要素を取得しています。

array = ["1111", "apple", "2222", "orange", "3333", "melon"]

p array.grep(/^[0-9]+$/)
p array.grep(/^[a-z]+$/)

実行結果:

[“1111”, “2222”, “3333”]
[“apple”, “orange”, “melon”]

最初の引数では数字の0〜9だったら取得するパターンを指定し、2番めの引数にはアルファベットのa-zだったら取得する正規表現のパターンを指定しています。

実行結果のとおり、数字と文字列をそれぞれ取得できていることがわかりますね!

クラスを指定する方法

grepメソッドは引数にクラスを指定すると、そのクラスに一致した型の要素を返します。

以下のサンプルをご覧ください。

array = [1111, 10.1, "apple", 10.2, 2222, "orange", 3333, "melon"]

p array.grep(Integer)
p array.grep(String)
p array.grep(Float)

実行結果

[1111, 2222, 3333]
[“apple”, “orange”, “melon”]
[10.1, 10.2]

このサンプルでは、Integer、String、Floatのクラスを引数にそれぞれ指定し、一致した型の要素を配列として返しています。

ブロックを指定する方法

grepメソッドにブロック処理を記述することによって、grepメソッドの結果が真の要素に対してブロックの処理を実行することができます。

以下のサンプルではパターンにマッチした要素に対して、ブロックの処理でそれぞれ大文字と小文字に変換した配列を返しています。

array = ["1111", "apple", "2222", "ORANGE", "3333", "melon", "BANANA"]

p array.grep(/^[A-Za-z]+$/) {|item| item.upcase }
p array.grep(/^[A-Za-z]+$/) {|item| item.downcase }

実行結果:

[“APPLE”, “ORANGE”, “MELON”, “BANANA”]
[“apple”, “orange”, “melon”, “banana”]

まとめ

ここでは条件に一致する配列の要素を取得するのに便利なgrepメソッドについて解説しました。

・grepメソッドとは
・そもそも正規表現とは
・grepメソッドの使い方

grepメソッドを使用すれば、簡単に正規表現などでマッチする要素を取得できますので使い方についてはよく理解しておきましょう。

もし、grepメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー