エスケープシーケンス検索で、制御文字を示すx00HHの直後が数字の場合の動作が異常
江村様
こんにちは,おつかれさまです。
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文字で打ち切っているようで正しく動きます.代替策の提供は結構です.急ぎません.
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 というようにしてエスケープする必要があります。
いまのエスケープ文法xhhhhがUnicodeも表現するためのものですね。了解いたしました。
ご返答どうもありがとうございました。
このトピックの投稿: 3