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

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

(2021 年 06 月 30 日公開 / 2022 年 10 月 11 日更新)

数字を表す「\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

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。