Subject: Re: EmEditorでの漢字一字 Date: 2007年9月24日 20:10:38:JST ---------------------------------------------------------------------- EmEditorのヘルプでは,漢字1字にマッチする正規表現を [\x{3400}-\x{9fff}\x{f900}-\x{fa2d}] としているが,もっと範囲を限定し, [\x{4e00}-\x{9fff}] としてもよいかという質問に対する回答のメール ---------------------------------------------------------------------- 結論から言うと,今回の場合,現実的には,[一-龠] か [一-龠々〆] で 十分だと思います。 順を追って,説明していきます。 EmEditor のヘルプにある「漢字1字」の正規表現ですが,これは, 大雑把に言って,「CJK統合漢字拡張A」「CJK統合漢字」「CJK互換漢字」の ブロックにある文字のどれか,を表します。*  * 「CJK統合漢字拡張A」と「CJK統合漢字」の間には,漢字ではない   文字のブロックが入っている。 この「漢字」の解釈が正しいかどうかは,処理対象と目的次第で 変わってきます。さらに多くの文字 (例えば「CJK統合漢字拡張B」) を 「漢字」に含めて扱うとすれば,範囲を拡大する必要がありますし, 逆に「CJK統合漢字拡張A」などは含めなくてよいということであれば, もっと範囲を限定してもよいことになります。 現在,使用できる日本語のコーパスや電子テキストの多くは,Unicode の 利用が一般的になる前に,JIS や Shift JIS などの文字コードで作られたか, あるいは,互換性を考えて JIS X 0208 の範囲内で作成されたものが 多いので,それらを処理するだけであれば,「CJK統合漢字拡張A」などを 考慮する必要はありません。また,韓国語や中国語のテキストを扱う場合は 別として,「CJK互換漢字」のことを考える必要はないだろうと思います。 従って,内部コードが Unicode であっても,「CJK統合漢字」の範囲内で 考えておけば,ほとんど問題は生じないと思います。 「漢字」を「CJK統合漢字」に限るとしても,今度は「CJK統合漢字」の どの範囲を指定するかが問題になります。 a. U+4E00 〜 U+9FA0 (「一」から「龠」まで) b. U+4E00 〜 U+9FA5 (「一」から「<龠頁>」まで) c. U+4E00 〜 U+9FFF (「一」からブロックの最後まで) 一番広く取れば,ブロックの端から端までを指定した c. になりますが, U+9FA6 〜 U+9FFF にある文字は,後で追加されたもので,まだ 対応していないOS,ツールが多く,おそらく元のコーパスの方にも その部分に対応する文字は入っていないでしょう。また,「龠」の 後ろから U+9FA5 の間にある5文字は JIS X 0208 には存在しない 文字なので,元の文字コードが Shift JIS などであるファイルを 処理する時には,無視しても現実的に問題は生じません。EmEditor では コードポイントを基に \x{9FA5} と指定することができますが,そのような 指定が出来ないツールであれば,a. のように終端を「龠」としたのでも 十分です。 あとは,必要があれば「々」などを含め,[一-龠々〆] のように 指定すればいいでしょう。(「仝」の字は,JIS X 0208 では記号扱いだが, Unicode では「CJK統合漢字」に含まれるので別に指定する必要はない。) 上で書いたのは,JIS X 0208 の範囲で作成された日本語テキストを 処理する場合の話です。最近では,最初から Unicode で作成し, JIS X 0208 外の文字を使用するケースも増えてきていますから, そのようなファイルを処理する場合には,そのまま当てはまる話では ありませんので,ご注意ください。 -- 名古屋大学大学院国際開発研究科 国際コミュニケーション専攻 大名 力 (Tsutomu OHNA)