任意の文字を繰り返す文字列にマッチする

任意の一文字にマッチするメタ文字(.)に対して繰り返しのメタ文字である「*」や「+」を組み合わせることで、任意の文字が繰り返し現れた場合にマッチする正規表現を作成することができます。ここでは Ruby の正規表現で任意の文字を繰り返す文字列とマッチするパターンを作成する方法について解説します。

(Last modified: )

任意の文字を繰り返す文字列にマッチする

例として「a」と「b」の間に任意の文字が繰り返し現れるパターンは次のようになります。

/a.+b/

上記の場合、メタ文字(+)の直前の文字がメタ文字(.)となっています。「+」は直前の文字を 1 回以上繰り返す場合にマッチし、「.」は任意の 1 文字にマッチします。結果として「.+」は任意の文字が 1 回以上繰り返す場合にマッチすることになります。よって「a」と「b」の間にどんな文字が何文字記述されていてもマッチすることになります。

マッチするもの:

aPb
abowb
a1098opeb

ただしメタ文字「.」は改行にはマッチしませんので、改行以外の任意の文字が 1 回以上繰り返される場合にマッチします。

サンプルコード

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

# encoding: UTF-8

def check(str)
  if /G.+G/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("「G.+G」にマッチするかどうか")

check("GooG")
check("GomaG")
check("G1234321G")
check("Gpp\nopoG")

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

任意の文字を繰り返す

-- --

Ruby の正規表現で任意の文字を繰り返す文字列とマッチするパターンを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。