もう悩まない!Rubyの検索方法を3つのパターン別で紹介

Rubyで文字列や配列を検索する方法がよくわからない…
Rubyで正規表現を使用して一致する文字列を検索したい
Rubyで検索する方法はたくさんあるけど、やり方をすぐ忘れてしまう

Rubyで検索するためのメソッドはたくさん用意されていますが、どんなときにどのメソッドを使えばいいのか、全てを理解している方は少ないのではないでしょうか?

こんにちは!エンジニアとしてさまざまな開発に携わってきたヤマシタです。この記事ではRubyで検索する方法についてパターン別におすすめの検索方法を解説していきます。

Rubyを勉強し始めた初心者の方に必見の内容となりますので、ぜひ最後まで読んでいただいて、Rubyで検索する方法について理解を深めていただければと思います。

この記事はこんな人のために書きました

  • Rubyで検索する方法の基礎について学びたい方
  • パターン別に検索する方法について知りたい方

Rubyで検索する方法について、網羅的に解説していますのでぜひ参考にしてください。

Rubyで検索する3つのパターン

冒頭でも触れましたがRubyで文字列を検索する方法はたくさんあります。しかし、種類がありすぎてどんなときにどんなメソッドを使えばいいのか?忘れてしまいがちです。

実際の業務でも以下のような3つのパターンに直面することも多いと言えるでしょう。

  • 文字列の中に指定した文字列が含まれているか知りたい
  • 配列の要素に指定した文字列が含まれているか知りたい
  • 正規表現で一致した文字列を抽出する方法を知りたい

この記事では検索するときによく使用する以下のメソッドについてそれぞれ解説していきます。

メソッド動作返り値
index指定した文字列を検索文字列の位置
include?指定した文字列を検索真偽値
select条件に一致した要素を取得一致した要素の配列
reject条件に一致しない要素を取得一致しない要素の配列
grep正規表現にマッチした要素を取得マッチした要素の配列
match正規表現にマッチした部分文字列を取得マッチした文字列
sliceマッチした最初の文字列を取得マッチした文字列

Rubyで文字列を検索する方法

indexメソッド

indexメソッドは文字列の中に特定の文字列が含まれているか、確認するためのメソッドです。

indexの書き方

文字列の中に検索文字列が含まれていた場合は、その文字列の位置(何文字目か?)を返します。検索文字列が含まれていなかった場合はnilを返します。

実行結果:

実行結果のように文字列fruitsにindexメソッドを実行し、引数に文字列を指定することによって、文字列が見つかった場合は文字列の位置を返します。appleなら0文字目、orangeなら6文字目、mangoは存在しないためnilを返していることがそれぞれわかりますね。

include?メソッド

include?メソッドはindexメソッドと同様に指定した文字列を検索するメソッドです。indexメソッドとの違いとして、検索文字列が見つかった場合はtrueを、見つからなかった場合はfalseを返します。

include?の書き方

指定した文字列が存在するか、確認したいだけの場合に便利ですので、ぜひ使い方は覚えておいてください。

実行結果:

このようにinclude?メソッドの引数に指定した文字列が見つかったらtrue、見つからなかった場合はfalseを返していることがわかりますね。

include?メソッドは真偽値を返すため、そのまま条件式として使用することもできます。

実行結果:

Rubyのif文については、以下の記事で詳細に解説していますのでぜひ参考にしてください。

Rubyで配列を検索する方法

selectメソッド

selectメソッドは条件式に一致した要素を取得するためのメソッドです。

selectの書き方

波括弧{}で囲った変数に要素を一つずつ格納していき、ブロック処理が真になった場合に要素を取得していきます。ブロック処理が真となった要素は新しい配列として返されます。

実行結果:

実行結果のように、1番目では3以上、2番目は3と一致したもの、3番目は3以下という条件を満たしたものを返しています。戻り値は配列が返されていることもわかりますね。

また、以下のように文字列に対しても検索することが可能です。

実行結果:

このサンプルではブロック処理でinclude?メソッドを使用して指定した文字列が存在した場合は、新しい配列を作成しています。そんなselectメソッドについては以下の記事でも詳しく紹介していますので、ぜひ参考にしてください。

rejectメソッド

rejectメソッドは配列の要素分ブロックの処理を実行し、条件が偽の要素のみを取得するメソッドです。ブロック処理が偽となった要素は新しい配列として返されます。

rejectの書き方

波括弧{}で囲った変数に要素を一つずつ格納していき、ブロック処理が偽になった場合に要素を取得していきます。ブロック処理が偽となった要素は新しい配列として返されます。

実行結果:

1番目では3以上、2番目は3と完全に一致したもの、3番目は3以下という条件の結果が満たしていないもの返しています。先に紹介したselectメソッドとは全く逆の結果であることがわかりますね。

Rubyの正規表現で検索する方法

ここでは正規表現で文字列を検索するgrep、match、sliceメソッドについてそれぞれ解説していきます。


そもそも正規表現とは

正規表現は主にパターンにマッチした文字列を取得するために使われるもので、あらゆる文字列を検証することができます。
例えば[A-Z]ではアルファベットのAからZまでを表現し、数字の[0-9]では数値の0から9までを表現します。

grepメソッド

grepメソッドは引数に指定した正規表現のパターンが一致した要素を取得して配列として返すメソッドです。

grepの書き方

以下ではgrepメソッドの引数に正規表現で数字の[0-9]、文字列の[a-z]を指定して、パターンにマッチした要素を取得しています。

実行結果:

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

grepメソッドについては以下の記事でも詳しく解説していますので、ぜひ参考にしてください。

matchメソッド

matchメソッドは正規表現にマッチした部分文字列を取得します。

matchメソッドの書き方

以下では”の勉強”が含まれている文字列を取得しています。

実行結果:

このようにそれぞれ指定した正規表現にマッチした文字列が取得できていることがわかりますね。

matchメソッドについては以下の記事でも詳しく解説しています。

sliceメソッド

sliceメソッドは正規表現のパターンにマッチした部分文字列を取得します。指定したパターンが存在しない場合はnilを返します。

sliceの書き方

以下ではsliceメソッドを使用して正規表現にマッチした最初の文字列を取り出しています。

実行結果:

sliceメソッドのさまざまな使い方については、以下の記事でも詳しく解説しています。

Rubyについてもっと学びたい方へ

ここでは、Rubyで検索するさまざまな方法について解説していきました。プログラミングを理解するためには、たくさんのトライ・アンド・エラーが必要です。


Rubyの使い方についてもっとよく知りたい
Rubyのスキルを身に着けられるか不安…
Rubyを体系的に理解したい

と感じている方は以下の記事も合わせてご覧ください。Rubyの基礎の基礎から勉強法などを体系的にまとめていますので、きっと参考になるのではと思います。

まとめ

今回はRubyで検索する方法について、検索の方法を3つのパターン別に解説しました。Rubyで検索するにはさまざまな方法があることがわかったと思います。

実際の業務ではこれらのメソッドを駆使してさまざまな処理を行うことになりますので、使い方についてはしっかりとマスターしておきましょう。

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a1
LINEで送る
Pocket

書いた人

ヤマシタ

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

おすすめコンテンツ

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

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