スライドショー

はじめてのRuby!matchメソッドで正規表現によるマッチング

Rubyには文字列を検索するさまざまな方法が用意されていますが、

Rubyで開発を行う際に、

「正規表現で一致した文字列を取得したい」
「一致した文字列の前後の文字列を取得したい」

のような問題に直面することがあります。

そんなときはmatchメソッドを使用すると便利です。

ここではmatchメソッドについて、

【基礎】matchメソッドとは
【基礎】一致した文字列を取得する方法
【基礎】部分一致した文字列を取得する方法
【基礎】数値のみ取得する方法
【発展】一致した前後の文字列を取得する方法

などについてわかりやすく解説していきます。

matchメソッドは文字列を正規表現で検索するときに非常に便利ですので、この機会に覚えておきましょう!

matchメソッドとは

matchメソッドは引数に正規表現を指定して、マッチした文字列を取得したいときに使用します。

matchオブジェクトは以下のように記述します。

オブジェクト名.match(/正規表現/)

正規表現は「//」でくくった中に記述します。

正規表現とは特殊文字を用いて文字列を表現するための手段で、プログラミングにおいて文字列を検索するときによく使われます。

たとえば、「samurai engineer」の文字列から「engineer」の部分のみ取得したい場合は正規表現として「/.*engineer/」と表現することで取得することができます。

matchメソッドは正規表現のパターンにマッチした場合は配列を返し、一致しなかった場合はnillを返します。

matchメソッドの基本

一致した文字列を取得する

ここではmatchメソッドの基本的な使い方を見ていきましょう。

文字列の中から、一致した文字列を取得するには以下のように記述します。

サンプルプログラム:

str = "appleorangemelon"
 
md = str.match(/orange/)
 
puts md[0]

実行結果:

orange

このサンプルでは「//」で文字列「orange」が存在するかmatchメソッドで確認を行い、一致した場合はその文字列を取得しています。

オブジェクトstrには文字列「orange」が存在するため、mdには一致した文字列が格納されます。

部分一致した文字列を取得する

部分的に文字列を検索したい場合は「*」を使用します。

「*」は検索文字列の前または後ろに「*検索文字列」のようにつけることで、検索文字列を含む文字列を取得することができます。

サンプルプログラム:

string = "Hello Ruby!! Hello Rails!!"

md = string.match(/.*Ruby!!/)

puts md[0]

実行結果:

Hello Ruby!!

このように「*Ruby!!」と指定することで検索文字列を含む前の文字列も取得することができました!

文字列から数字のみを取得する

文字列から数字のみを取得したい場合は、「/\d+/」のように指定します。

/\d+/という正規表現は、数字が1個以上並んでいる場合の文字列にマッチします。

サンプルプログラム:

str = "AAA-012-BBB".match(/\d+/)
p str[0]
 
str = "ABC-DEF-345".match(/\d+/)
p str[0]
 
str = "678-ABC".match(/\d+/)
p str[0]

実行結果:

"012"
"345"
"678"

このように数字のみを取得することができましたね!

一致した文字列の前後の値を取り出す

pre_matchでマッチした前の部分を取り出す

pre_matchメソッドを使用すると、マッチした文字列のより前の文字列を取得することができます。

サンプルプログラム:

str = "Rubyの勉強 および Raisの勉強をはじめましょう"

reg = /および/.match(str)

p reg.pre_match

実行結果:

"Rubyの勉強 "

マッチした文字列、「および」より前の部分が取り出されました!

post_matchマッチした後ろの部分を取り出す

post_matchメソッドを使用すると、マッチした文字列のより後ろの文字列を取得することができます。

サンプルプログラム:

str = "Rubyの勉強 および Raisの勉強をはじめましょう"

reg = /および/.match(str)

p reg.post_match

実行結果:

" Raisの勉強をはじめましょう"

マッチした文字列、「および」より後ろの部分が取り出されました!

まとめ

ここでは、文字列を検索するmatchメソッドについて、

  • matchメソッドとは
  • 一致した文字列を取得する方法
  • 部分一致した文字列を取得する方法
  • 数値のみ取得する方法
  • 一致した前後の文字列を取得する方法

などについて解説しました。

matchメソッドを使用すれば正規表現を使用して文字列を簡単に取得することができますので、使い方はしっかりと理解しておきましょう。

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

LINEで送る
Pocket

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

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

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

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

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

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

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

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

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

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

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら