直前の文字が0回または1回現れる文字にマッチする(?)

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

(Last modified: )

直前の文字を0回か1回

メタ文字 ? は直前の文字が 0 回か 1 回現れた文字列にマッチします。例えば次のように使用します。

/Go?gle/

上記の場合、クエスチョン(?)は直前の文字(今回は「o」)に 0 回か 1 回現れたものにマッチします。(直前の文字が無い場合は、空文字にマッチしていることになります)。

マッチするもの:

Ggle
Gogle

マッチしないもの:

Ggle
Google
Gooogle
Gpgle

メタ文字のプラス(+)やアスタリスク(*)よりも、より限定的なものとなります。

サンプルコード

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

# 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回か1回(?)

-- --

Ruby の正規表現で直前の文字に 0 回か 1 回マッチするメタ文字「?」の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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