文字クラスを使っていずれかの文字とマッチするパターンを作成する

文字クラスは文字の候補をいくつか列挙し、いずれかの文字と一致するパターンを記述するときに使用します。ここでは Ruby の正規表現で文字クラスを使っていずれかの文字とマッチするパターンを作成する方法について解説します。

(Last modified: )

文字クラスを使っていずれかの文字とマッチするパターンを作成する

文字クラスは例えば次のように記述します。

/[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]/

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

サンプルコード

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

# encoding: UTF-8

def check(str)
  if /200[345678]/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("200[345678] にマッチするかどうか")

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

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

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

-- --

Ruby の正規表現で文字クラスを使っていずれかの文字とマッチするパターンを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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