[Tokyo.pm] Re: [Tokyo.pm] utf-8 用の "word" char って?

Dan Kogai dankogai @ dan.co.jp
2003年 11月 20日 (木) 12:05:15 CST


On Nov 21, 2003, at 12:46 AM, Keiichi Okabe wrote:
> 岡部です.
>
> 5.8.2 もでて,ActivePerl も5.8.1が出てきたので,utf8を
> 活用するスクリプトを作り始めています.

Perlのソノ部分担当の弾です。

> で,
>
> \w Match a "word" character (alphanumeric plus "_")
>
> に対応する,日本語文字クラス(って言えばよいのかな?)
> ってのはどう記述すればよいのでしょうか.

ちょっと定義が曖昧でわかりません。要するに、漢字なら漢字、カタカナならカタカナ、ひらがなならひらがなだけ抜き出せればよいのでしょうか?あるい 
は、日本語としてOKな文字をすべて取り出すという意味でしょうか?とりあえず前者の場合を想定すると.....

> perldoc をあさっているのですが,見つからないので,どなたか(どこに出ている
> という情報でもよいので)教えてください.

例えば、カタカナだけ抜くのであれば、

\p{Katakana}

という表現が出来ます。以下、一例。

binmode STDIN =>":utf8";
binmode STDOUT=>":utf8";
while(<>){
     my @words =  /(\p{Han}+|\p{Hiragana}+|\p{Katakana}+|\p{latin}+)/g;
     print join("," => @words), "\n";
}
__END__

これに、

漢字カタカナひらがなの混じったtext

をUTF-8で食わせると、

漢字,カタカナ,ひらがなの,混,じった,text

と出てきます。\p{}の詳しい使い方は、perldoc perlunicodeをご覧ください。

Dan the Perl5 Porter




Tokyo-pm メーリングリストの案内