タグ付き正規表現No.08637
さん 01/05/10 05:34
 
普通に十を検索する場合は、きちんとヒットするのですが、
タグ付き正規表現を用いて、十の後ろに"\f"を付けるとヒットしません。

例えば、十五を検索する場合、十と五の間に"\f"を入れてもヒットしません。

それ以外の文字については、"蚕"や"欺"のようにコードがXX5Cの文字の後ろに、
"\f"を付けると検索できないようです。

[ ]
RE:08637 タグ付き正規表現No.08638
番頭++ さん 01/05/10 07:47
 
>それ以外の文字については、"蚕"や"欺"のようにコードがXX5Cの文字の後ろに、
>"\f"を付けると検索できないようです。

確かに全角コードの 0x5C の扱いがおかしいです。

# でも、何時からなんだろう、怖いよ ...

[ ]
RE:08637 タグ付き正規表現No.08641
安久津 さん 01/05/10 13:52
 
>それ以外の文字については、"蚕"や"欺"のようにコードがXX5Cの文字の後ろに、
>"\f"を付けると検索できないようです。
確かに。
\f が \x0c にマッチするのじゃないのかと思ってやってみました。

newfile;
  insert "\n";
  insert "RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRr\n";
  insert "十一十二十三十四十五十六十七十八十九\n";
  insert "十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c\n";
  $$sb[0]="R\\f.";
  $$sb[1]="十\\f.";
  $$sb[2]="十\\f.";
  ##i = 0;
  while( ##i < 3 ){
    gofiletop;
    replacedown $$sb[##i], "\\0", regular;
    while( result ) finddown;
    menu "&How about ?", "&Next";
    ##i = ##i + 1;
  }
endmacro;

ちょっとだけマッチしている。変な動きです。
環境 Win95B, 秀丸v3.05
jre32.dll v1.17
breglf v0.0.0.1(v1.1a), bregexp v2.0.4.29

では。

[ ]
RE:08637 タグ付き正規表現No.08645
秀丸担当 さん 01/05/11 17:15
 
>普通に十を検索する場合は、きちんとヒットするのですが、
>タグ付き正規表現を用いて、十の後ろに"\f"を付けるとヒットしません。

やってみたところ、再現しました。
これはバグですね。0x5cがあるとまずいようです。
JREではなく秀丸側のバグの気がします。直しておきます。

[ ]
RE:08641 タグ付き正規表現No.08649
Arimac さん 01/05/11 23:43
 
bregifには"\f"がそのまま来てました(^^;
例えば「表\f示」なら「表\f示」が来ます。
ですので"\f"は"\x0c"にマッチします。
 
ちょっとだけマッチしているように見えるのは
"十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c"

"十\x0c十" + "\x0c" + "十\x0c十" + "\x0c" + "十\x0c十" +
"\x0c" + "十\x0c十" + "\x0c" + "十\x0c十" + "\x0c"
としてみると分かるように "\x0c" は一回の置換では残ります(^^;
 
#現在、出張で東京に来ています(^^;
#で、これはホテルからの書き込みです(^^;
#たまたまノートにbregifのデバッグ版を入れてました(^^;

[ ]
RE:08649 タグ付き正規表現No.08651
安久津 さん 01/05/12 06:15
 
こんにちは Arimac さん、安久津です。

>bregifには"\f"がそのまま来てました(^^;
>例えば「表\f示」なら「表\f示」が来ます。
>ですので"\f"は"\x0c"にマッチします。
やっぱり。

>ちょっとだけマッチしているように見えるのは
>"十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c十\x0c"
>を
>"十\x0c十" + "\x0c" + "十\x0c十" + "\x0c" + "十\x0c十" +
>"\x0c" + "十\x0c十" + "\x0c" + "十\x0c十" + "\x0c"
>としてみると分かるように "\x0c" は一回の置換では残ります(^^;
なるほど。
そういえば、番頭++さんが「タグ付き正規表現」で上手くいかないときの
対処方法を述べられていました。「カッコを使え」
ここでもやってみよう。

  replacedown "(十)\\f.", "\\0", regular;

おおお、上手くいきました。(^^)
それにしても \x5c のお話をした直後だったので、妙な気分でした。
では。

[ ]