1 件の投稿を表示中 (合計 4 個)
  • 作成者
    投稿
  • #11777
    redakt55
    参加者

    マニュアルの「正規表現構文」
    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 については以下に説明があります。

    [URL1]
    http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.character_properties

    そして,具体的なプロパティー名は以下を見ろ,とあります:

    [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++ をやめて鬼車・鬼雲にして!というくらい切実です。

    #11780
    Yutaka 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}]

    よろしくお願い申し上げます。

    #11782
    redakt55
    参加者

    平仮名・片仮名のコード範囲が微妙に間違っていますが,それはともかく,とりあえず漢字についてだけ。

    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 では漢字の検索ができない,という話になってしまいます。

    #11788
    Yutaka Emura
    キーマスター

    redakt55 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    ご指摘の件、改善を検討させていただきます。
    ご意見ありがとうございました。

    よろしくお願い申し上げます。

1 件の投稿を表示中 (合計 4 個)
  • このトピックに返信するにはログインしてください。