スライドショー

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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

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

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