選択に対する繰り返しを表すパターンを作成する

メタ文字の「*」や「+」は複数の文字列のどれかにマッチする(|)に対しても適用することができます。そのため複数の文字列のいずれかが繰り返し現れるパターンを作成できます。ここでは Ruby の正規表現で選択に対する繰り返しを表すパターンを作成する方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 11 日更新)

選択に対する繰り返しを表すパターンを作成する

複数の文字列のいずれかが繰り返し現れる正規表現パターンは次のように定義します。

/(候補1|候補2|..)繰り返しを表すメタ文字/

具体的な例で考えて見ます。

/(Good|Bad)+/

メタ文字「+」は直前の文字又はグループを 1 回以上繰り返す場合にマッチします。その為正規表現全体としては「+」の対象が選択であるため、「Good」か「Bad」のいずれかが1回以上繰り返す場合にマッチすることになります。

この時注意して頂きたいのは候補である「Good」か「Bad」のどちらか 1 つだけが 1 回以上繰り返されるのではなく、繰り返されるのは「Good」でも「Bad」でもどちらでもいいということです。つまり「GoodGoodGood」や「BadBad」だけではなく「GoodBadGood」も「BadBadGoodGood」もマッチします。

マッチするもの:

Good
Bad
GoodGoodGood
BadGoodBadGood
GoodBadBadBadGood

このように選択に対して繰り返しのメタ文字を指定することで、選択の中の同じ候補が繰り返されるだけではなく、複数の候補のいずれかが繰り返し現れる場合にマッチする正規表現オブジェクトを作成することが出来ます。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

def check(str)
  if /No(0|1|2|3|4|5|6|7|8|9)+ is/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("No(0|1|2|3|4|5|6|7|8|9)+ is にマッチするかどうか")

check("No01 is Yamada")
check("No12506 is Honda")
check("No.01 is Kuroda")
check("No12.5 is Endou")

下記のように実行して下さい。

選択に対する繰り返し

-- --

Ruby の正規表現で選択に対する繰り返しを表すパターンを作成する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。