- 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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。