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

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。