直前の文字を0回か1回(?)

広告

メタ文字の1つであるクエスチョン(?)をパターンの中に記述すると、クエスチョンの直前にある文字が0回か1回現れた文字列にマッチします。0回でも可なので直前の文字が存在しなくてもマッチします。

例えば次のように使用します。

/Go?gle/

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

マッチするもの:

Ggle
Gogle

マッチしないもの:

Ggle
Google
Gooogle
Gpgle

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

サンプルプログラム

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

test4-1.rb

#! ruby -Ku
require "kconv"

def check(str)
  if /Go?gle/ =~ str then
    print(Kconv.tosjis("○") + str + "¥n")
  else
    print(Kconv.tosjis("×") + str + "¥n")
  end
end

print(Kconv.tosjis("「Go?gle」にマッチするかどうか¥n¥n"))

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

上記のプログラムを「test4-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

直前の文字を0回か1回(?)

( Written by Tatsuo Ikura )