- Home ›
- Ruby入門 ›
- Ruby正規表現の使い方
メタ文字(.)が全角文字にマッチするかどうか
メタ文字(.)は任意の 1 文字にマッチしますが、 UTF-8 など非 ASCII の文字を扱える文字コードを使用している場合は半角文字だけでなく全角文字の 1 文字にマッチします。ここでは Ruby の正規表現でメタ文字(.)が全角文字にマッチするかどうかについて解説します。
(Last modified: )
メタ文字(.)が全角文字にマッチするかどうか
メタ文字(.)は任意の 1 文字にマッチしますが、半角文字および全角文字の 1 文字のどちらもマッチします。
/a.b/
この場合、「aob」や「atb」などだけではなく「aたb」や「a東b」などにもマッチします。
なお文字コードが NONE(ASCII)
の場合も同じなのですが、全角文字が含まれる文字列とマッチするかどうか調べると「warning: historical binary regexp match /.../n against UTF-8 string」が表示されます。
サンプルコード
では簡単なプログラムで確認してみます。
# encoding: UTF-8 def check1(str) if /a.b/ =~ str then puts("○" + str) else puts("×" + str) end end def check2(str) if /a.b/n =~ str then puts("○" + str) else puts("×" + str) end end puts("/a.b/ にマッチするかどうか") check1("aob") check1("aあb") check1("a東b") puts() puts("/a.b/n にマッチするかどうか") check2("aob") check2("aあb") check2("a東b")
下記のように実行して下さい。
-- --
Ruby の正規表現でメタ文字(.)が全角文字にマッチするかどうかについて解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。