- Home ›
- Ruby正規表現の使い方 ›
- いずれかの文字に一致(文字クラス) ›
- HERE
文字クラスの略記
文字クラスでは比較的よく利用される組み合わせがあります。例えば数字を表す「[0-9]」などです。このような比較的よく利用される文字クラスには略記が用意されています。ここでは文字クラスの略記法について確認します。
数字を表す「¥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+/
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" def check(str) if /[¥d,]+/ =~ str then print(Kconv.tosjis("○") + str + "¥n") else print(Kconv.tosjis("×") + str + "¥n") end end print(Kconv.tosjis("[¥¥d,]+ にマッチするかどうか¥n¥n")) check("1500") check("1,340") check("ab1") check("abc")
上記のプログラムを「test5-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )