文字クラスで用意されている略記の使い方

文字クラスでは比較的よく利用される組み合わせがあります。例えば数字を表す [0-9] などです。このような比較的よく利用される文字クラスには略記が用意されています。ここでは Ruby の正規表現で文字クラスの略記法について解説します。

(Last modified: )

数字を表す「\d」「\D」

\d は数字を表す略記法です。文字クラスの [0-9] に該当します。

/\d/
/[\d]/
/[0-9]/

上記は 0 から 9 のいずれかの文字にマッチします。 \d は文字クラスを表すブラケット [] の外側でも記述できますが、文字クラスの中の 1 つの候補としてブラケット内にも記述することができます。

また \D は数字以外を表す略記法です。文字クラスの [^0-9] 又は [^\d] に該当します。

/\D/
/[\D]/
/[^\d]/
/[^0-9]/

上記は 0 から 9 以外のすべての文字にマッチします。

\d を使い任意の桁数の数字にマッチさせる場合は次のように記述できます。

/\d+/

英数字を表す「\w」「\W」

\w は英数字を表す略記法です。文字クラスの [0-9a-zA-Z_] に該当します。英数字に加えてアンダーバー(_)も含まれます。 Ruby における識別子として使うことが出来る文字の集合と考えることができます。

/\w/
/[\w]/
/[a-zA-Z0-9_]/

上記は 0 から 9 、 a から z 、 A から Z 、_ のいずれかの文字にマッチします。 \w は文字クラスを表すブラケット [] の外側でも記述できますが、文字クラスの中の1つの候補としてブラケット内にも記述することができます。

また \W は英数字以外を表す略記法です。文字クラスの [^a-zA-Z0-9_] 又は [^\w] に該当します。

/\W/
/[\W]/
/[^\w]/
/[^a-zA-Z0-9_]/

上記は英数字以外のすべての文字にマッチします。

\w を使い任意の長さの英数字にマッチさせる場合は次のように記述できます。

/\w+/

空白を表す「\s」「\S」

\s は空白を表す略記法です。空白には半角スペースの他にに改行「\n」、復帰「\r」、改ページ「\f」、水平タブ「\t」です。文字クラスの [ \t\n\r\f] に該当します。

/\s/
/[\s]/
/[ \t\n\r\f]/

上記は空白、改行、復帰、改ページ、水平タブのいずれかの文字にマッチします。 \s は文字クラスを表すブラケット [] の外側でも記述できますが、文字クラスの中の1つの候補としてブラケット内にも記述することができます。

また \S は空白文字以外を表す略記法です。文字クラスの [^ \n\r\f\t] 又は [^\s] に該当します。

/\S/
/[\S]/
/[^\s]/
/[^ \n\r\f\t]/

上記は空白文字以外のすべての文字にマッチします。

\s を使い任意の連続する空白文字に文字にマッチさせる場合は次のように記述できます。

/\s+/
サンプルコード

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

# encoding: UTF-8

def check(str)
  if /[\d,]+/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("[\\d,]+ にマッチするかどうか")

check("1500")
check("1,340")
check("ab1")
check("abc")

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

文字クラスの略記

-- --

Ruby の正規表現で文字クラスの略記法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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