読者です 読者をやめる 読者になる 読者になる

Ruby1.9でUTF-8の漢字だけ正規表現でヒットさせる

1.9.2 :001 > "隣の客は良く柿食う客だ".each_char do |c|
1.9.2 :002 >       if c =~ /\p{Han}/
1.9.2 :003?>             puts $&
1.9.2 :004?>       end
1.9.2 :005?>   end
隣
客
良
柿
食
客
 => "隣の客は良く柿食う客だ" 

Ruby1.9では正規表現のエンジンがonigurumaに変更になったことで、Character Propertiesが利用できるようになりました。\p{Han}は、漢字*1です。日本語で言えば他にも、\p{Hiragana}, \p{Katakana} があります。

参考:
Class: Regexp (Ruby 1.9.3)
Ruby 1.9 における日本語処理のポイントをまとめてみました - ¬¬日常日記
MODULE.JP - 日本語に絡むUnicodeブロックとスクリプト(正規表現)

*1:恐らく中国語で利用される漢字含む