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

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

侍エンジニア編集部

株式会社SAMURAI

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

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close