はじめての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]

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

ブロックを指定する方法

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メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説