文字クラスによる文字の選択

広告

文字クラスとは1つの文字で出来た候補を列挙し、そのいずれかに一致する場合にマッチするパターンを記述する時に使用します。例えば次のように記述します。

/[ABC]/

候補となる文字を並べて記述し、全体をブラケット([])(角括弧とも言う)で囲います。選択と異なり、候補は必ず1文字です。その為候補と候補の間には区切り文字などは不用です。上記は「A」「B」「C」のいずれか1文字に一致した時にマッチします。

より具体的な例で確認して見ます。

/200[345678]/

上記の場合、マッチするものは次の通りです。

マッチするもの:

2003
2004
2005
2006
2007
2008

文字クラスは選択を使って次のように記述した場合と同じです。

/200(3|4|5|6|7|8)/

文字クラスでは候補が1文字しか使えませんが選択では複数の文字からなる文字列を候補として指定できます。その代わり文字クラスでは区切り文字が不用ですので候補を列挙する場合には簡潔に記述できます。また次のページ以降で詳しく確認しますが、連続した文字を候補として指定する場合には次のように記述することも出来ます。

/200[3-8]/

このように連続していて数多い候補がある場合に簡潔に記述できるのが文字クラスのメリットです。

サンプルプログラム

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

test1-1.rb

#! ruby -Ku
require "kconv"

def check(str)
  if /200[345678]/ =~ str then
    print(Kconv.tosjis("○") + str + "¥n")
  else
    print(Kconv.tosjis("×") + str + "¥n")
  end
end

print(Kconv.tosjis("200[345678] にマッチするかどうか¥n¥n"))

check("2007")
check("2008year")
check("2002")
check("2009")
check("2006.10.4")

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

文字クラスによる文字の選択

( Written by Tatsuo Ikura )