- 作成者投稿
- 2013年6月17日 8:01 am #11777redakt55参加者
マニュアルの「正規表現構文」
http://jp.emeditor.com/help/howto/search/search_regexp_syntax.htm
には,Unicode のプロパティー名で文字クラスを指定する p,および否定文字クラス版の P のことが書いてありません。しかし,EmEditor ver. 13 で試すと,p{space}でスペース類が,p{digit} で数字がヒットするので,使えないわけではないのだと思います。
そこで,EmEditor が利用しているという Regex++ 1.52 のマニュアルを見てみました。
p, P については以下に説明があります。そして,具体的なプロパティー名は以下を見ろ,とあります:
[URL2] Character Classes that are Always Supported
http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html[URL3] Character classes that are supported by Unicode Regular Expressions
http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.htmlこの表を見ながらいろいろな名前を入れてみたところ,以下のように少し残念な結果です。
◎p{lower}
「大文字と小文字を区別する」が ON の場合はいいのですが,OFF だと漢字・仮名までもがヒットします。
※そもそも,小文字を指定しているのに,「~を区別する」の ON/OFF で結果が変わる仕様自体どうかと思います。鬼車・鬼雲は大文字小文字照合オプションを ON にしても lower が大文字にマッチしたりしません。◎Unicode Regular Expressions
前述の [URL3] のクラス名がぜんぜん使えません。
たとえば,p{ASCII} で検索すると,以下のエラーが出ます。
Escape sequence was neither a valid property nor a valid character class name. The error occurred while parsing the regular expression: ‘p{ASCII}>>>HERE>>>’.また,そもそも Regex++ のマニュアルに載ってないので使えなくて当然かも知れませんが,Han や Katakana といった Unicode の「一般カテゴリー」の名称が使えません。
日本のユーザーにとっては p{Han}(すべての漢字)が使えるかどうかが極めて重要な問題なんです。これ無しで漢字検索なんてはっきり言ってできません。
p{Han} が使えないんなら Regex++ をやめて鬼車・鬼雲にして!というくらい切実です。
2013年6月17日 5:48 pm #11780Yutaka Emuraキーマスターredakt55 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
現在のバージョンでは、Regex++ のサイトに書かれている Unicode 正規表現については、EmEditor ではサポートしていません。このような Unicode 正規表現もサポートした方がいいでしょうか? サポートした方がいいでしたら、将来のバージョンで検討させていただきます。
その代わり、次のような方法で、ひらがななどを検索することは可能です。
ひらがな
[x{3041}-x{309e}]
•全角カタカナ
[x{309b}-x{309c}x{30a1}-x{30fe}]
•半角カナ
[x{ff61}-x{ff9f}]
•漢字
[x{3400}-x{9fff}x{f900}-x{fa2d}]
•漢字記号
[x{3000}-x{3037}]よろしくお願い申し上げます。
2013年6月18日 2:08 am #11782redakt55参加者平仮名・片仮名のコード範囲が微妙に間違っていますが,それはともかく,とりあえず漢字についてだけ。
U+3400-U+9FFF は「CJK 統合漢字」と「CJK統合漢字拡張A」を合わせたものですね。
U+F900-U+FA2D ってのは「CJK 互換漢字」の一部分ですが,全体は U+F900-U+FAFF です。
Unicode の漢字領域は,これらの他に CJK 統合漢字拡張B~D および CJK 互換漢字補助の四つがあります。
部首(U+2F00-2FDF)も漢字に含めてほしいですね。
それに,漢数字の〇(U+3007)はこれらの領域にありませんが,れっきとした漢字です。
などなど。こんなものをいちいち書いてられるか,というのが当初の投稿の意図でした。
「統合漢字,拡張A,互換漢字に含まれない漢字なんて,ごく特殊な字じゃないの?」と思われるかも知れませんが,そうではありません。
人名などに使われる平凡な漢字「𡈽(U+2123D)」「𠀋(U+2000B)」(いずれも JIS 第三水準)はCJK統合漢字拡張Bに入っています。なので,漢字が p{Han} と書けないと大変困るのです。
で,いま気づきましたが,x{ } の形式って,4 桁までなんですね。となると,基本多言語面(BMP: Basic Multilingual Plane)の文字しか検索できません。
さきほどの「𡈽」「𠀋」を含む CJK 統合漢字拡張 B~D は BMP 外なので,[x{20000}-x{2FFFF}] といった書き方すらできません。EmEditor では漢字の検索ができない,という話になってしまいます。
2013年6月18日 11:22 pm #11788Yutaka Emuraキーマスターredakt55 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
ご指摘の件、改善を検討させていただきます。
ご意見ありがとうございました。よろしくお願い申し上げます。
- 作成者投稿
- このトピックに返信するにはログインしてください。