1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #7331
    aioueoka
    メンバー

    江村様
     こんにちは,おつかれさまです。
     EmEditor 8.04 利用者です。

     エスケープシーケンスモードの検索のとき,
    x007f1
    のように,「1F以下と7Fのような制御文字を表すx00HH」の次に16進数字要素(0-9a-zA-Z)があるような検索文字列で検索すると,正しく検索できません.

     たとえば,Ctrl-Q で 007F(^?) を選ぶと実際には16進7fの1バイトができて,表示は反転した?(以下,? と記述)になりますが.
    ?1
    を作ってそれ自身(検索窓は x007f1 )を検索するとヒットしません.

    同様に
    1?はOK
    ?zはOK
    ?fはダメ(a-fは16進数字だからと思われます)

     エスケープシーケンスのときのx00HHの直後にくる文字が16進数字Hの場合には,それも5桁目の16進数字としてバイナリ化の入力に取り込んでしまっているのではないでしょうか.
    さしつかえなければ,検索窓のx00HHの処理のとき,数字列を4文字しか取り込まないで打ち切ってしまえば直ると思いますのでよろしくお願いいたします.

     なお,正規表現 x7f1 では2文字で打ち切っているようで正しく動きます.代替策の提供は結構です.急ぎません.

    #7333
    Yutaka Emura
    キーマスター

    aioueokaさんは書きました:
    江村様
     こんにちは,おつかれさまです。
     EmEditor 8.04 利用者です。

     エスケープシーケンスモードの検索のとき,
    x007f1
    のように,「1F以下と7Fのような制御文字を表すx00HH」の次に16進数字要素(0-9a-zA-Z)があるような検索文字列で検索すると,正しく検索できません.

     たとえば,Ctrl-Q で 007F(^?) を選ぶと実際には16進7fの1バイトができて,表示は反転した?(以下,? と記述)になりますが.
    ?1
    を作ってそれ自身(検索窓は x007f1 )を検索するとヒットしません.

    同様に
    1?はOK
    ?zはOK
    ?fはダメ(a-fは16進数字だからと思われます)

     エスケープシーケンスのときのx00HHの直後にくる文字が16進数字Hの場合には,それも5桁目の16進数字としてバイナリ化の入力に取り込んでしまっているのではないでしょうか.
    さしつかえなければ,検索窓のx00HHの処理のとき,数字列を4文字しか取り込まないで打ち切ってしまえば直ると思いますのでよろしくお願いいたします.

     なお,正規表現 x7f1 では2文字で打ち切っているようで正しく動きます.代替策の提供は結構です.急ぎません.

    Unicode に対応するため、x の後の16進数は、6桁まで記述できるようになっています。だから、x007f1 という場合 007f1 という5桁の文字も、ちゃんとした文字コードなのです (実際に、そのような文字が存在するかどうかは別として)。したがって、もし4桁より右が不要な場合は、x007f1 というようにしてエスケープする必要があります。

    #7335
    aioueoka
    メンバー

     いまのエスケープ文法xhhhhがUnicodeも表現するためのものですね。了解いたしました。
     ご返答どうもありがとうございました。

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