直前の文字が0回以上連続する文字列にマッチする(*)

メタ文字の1つであるアスタリスク(*)をパターンの中に記述すると、アスタリスクの直前にある文字が 0 回以上繰り返された文字列にマッチします。 0 回でも可なので直前の文字が存在しなくてもマッチします。ここでは Ruby の正規表現で直前の文字を 0 回以上繰り返した文字列にマッチするメタ文字「*」の使い方について解説します。

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

直前の文字を0回以上繰り返し

メタ文字 * は直前の文字を0回以上繰り返した文字列にマッチします。例えば次のように使用します。

/Go*gle/

上記の場合、アスタリスク(*)は直前の文字(今回は「o」)に 0 回以上繰り返したものにマッチします。 0 回以上というのは「o」が無い場合と「o」や「oooo」など「o」が 1 回以上繰り返されている文字マッチするということになります。(直前の文字が無い場合は、空文字にマッチしていることになります)。

マッチするもの:

Ggle
Gogle
Google
Gooogle
Goooogle
Gooooogle

マッチしないもの:

Gpgle
Gooopgle

0 回も含まれる点に注意して下さい。

サンプルコード

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

# encoding: UTF-8

def check(str)
  if /Go*gle/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("「Go*gle」にマッチするかどうか")

check("Ggle")
check("Gogle")
check("Google")
check("Goooooogle")
check("Gmgle")
check("Gomogle")

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

直前の文字を0回以上繰り返し(*)

-- --

Ruby の正規表現で直前の文字を 0 回以上繰り返した文字列にマッチするメタ文字「*」の使い方について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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