- Home ›
- Ruby入門 ›
- Ruby正規表現の使い方
文字クラスの中で全角文字を使用する
正規表現パターンに文字クラスを使用する場合、マルチバイトを認識できる文字コードを使用している場合は全角文字も含めることができます。ここでは Ruby の正規表現で文字クラスの中で全角文字を使用できるかどうかについて解説します。
(Last modified: )
文字クラスにおける日本語
文字コードにマルチバイトを認識できる文字コード( UTF-8 など)を設定している場合には文字クラス内に全角文字を 1 つの文字として指定することができます。
/[赤青緑]色/
「赤」「青」「緑」はそれぞれ1つの文字として扱われますので、上記は「赤色」「青色」「緑色」のいずれかの文字列にマッチします。
ひらがな、カタカナ、漢字を表す文字クラス
文字クラスではメタ文字のハイフン(-)で範囲指定が可能です。そこでひらながとカタカナを表す文字クラスは概ね次のように記述することができます。
/[ぁ-ん]/ /[ァ-ヴ]/
漢字を表す文字クラスは文字コードによって異なります。 UTF-8 の場合は次のように記述できます。
/[一-龠]/
上記は文字コード表を厳密に調べたものではありません。取りこぼす漢字が含まれている可能性があります。より良い文字クラスの定義の仕方が分かりましたら更新します。
では簡単なプログラムで確認してみます。
# encoding: UTF-8 def check1(str) if /[一-龠]+/ =~ str then puts("○" + str + "(" + $& + ")") else puts("×" + str) end end def check2(str) if /[ぁ-んァ-ヴ]+/ =~ str then puts("○" + str + "(" + $& + ")") else puts("×" + str) end end puts("/[一-龠]/ にマッチするかどうか") check1("お元気ですか") check1("こんにちは。") check1("新年のカレンダー") puts() puts("/[ぁ-んァ-ヴ]/ にマッチするかどうか") check2("お元気ですか") check2("こんにちは。") check2("新年のカレンダー")
下記のように実行して下さい。
「。」や「ー」が拾えていません。もう少し修正が必要なようです。
-- --
Ruby の正規表現で文字クラスの中で全角文字を使用できるかどうかについて解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。