grepで見逃しが発生します。No.30137
mogphy さん 11/08/30 18:17
 
秀丸エディタv8.10で、grepで正規表現を使用した際に、1行の文字数があまりに
長いと(2048文字以上?)、grepの見逃しの発生が確認されています。
たとえば以下のような長さ2048文字の文字列があったとします。

1000..(途中0が2046個)..0002

grepの正規表現で、検索する文字列に「^1.+2$」と指定しても、上記行はヒットしま
せん。
また、途中の0が2045個以下の場合は、正しくヒットします。
ちなみに、検索文字列に「^.+2$」と指定した場合には途中の0が2046個以上でも
検索ヒットしており、どのような条件でヒットしなくなるのか確実なことは
よく分かりません。
また、通常の検索や置換ではこのような見逃しは発生せず、正しく動作している
ように見え、grepの動作だけがおかしく見えます。

以上、調査のうえバグでしたら対応のほうよろしくお願いします。

[ ]
RE:30137 grepで見逃しが発生します。No.30138
Iranoan さん 11/08/30 20:39
 
 mogphy さん今日は、一ユーザの Iranoan です。
> 秀丸エディタv8.10で、grepで正規表現を使用した際に、1行の文字数があまりに
> 長いと(2048文字以上?)、grepの見逃しの発生が確認されています。
 おそらく次の事と関係します。
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x27665.html#27672

 同じ方法で対処はできますが、他のオプションを使わずにヒットして欲しい
ですね。

[ ]
RE:30138 grepで見逃しが発生します。No.30147
秀丸担当 さん 11/08/31 09:38
 

> 秀丸エディタv8.10で、grepで正規表現を使用した際に、1行の文字数があまりに
> 長いと(2048文字以上?)、grepの見逃しの発生が確認されています。

報告ありがとうございます。
確かにIranoanさんの言われる通りのことが原因で、正規表現でマッチしない
ケースがありました。
現状で回避するには、「追加の条件」をONにして何かの条件を指定すると回避で
きます。(例えば「#ifdef等の無効部分」を使われていない場合は「#ifdef等の
無効部分」「を除く」にするなど)

そういうことをしなくてもできるようになるべきだと思います。
引き続き課題とさせていただきます。
「追加の条件」を指定しなくても常にそれと同じ挙動になるような設定もあった
らいいので、そういう設定の場合は早い段階で対策バージョンを出せると思いま
す。併せて検討させていただきます。

[ ]
RE:30147 grepで見逃しが発生します。No.30157
mogphy さん 11/08/31 22:54
 
皆様レスありがとうございます。

もし早急な解決が難しいようでしたら、見逃しが発生していることだけでも
ポップアップ表示等で知らせていただけると助かります。
2048文字の制約があるなんて全然予想もしておらず、grepの結果が
不完全だったために作業の手戻りが発生してしまいましたので。

[ ]
RE:30157 grepで見逃しが発生します。No.30161
秀丸担当 さん 11/09/01 10:45
 

>もし早急な解決が難しいようでしたら、見逃しが発生していることだけでも
>ポップアップ表示等で知らせていただけると助かります。

お手数をおかけして申し訳ありません。
そういう状況が発生している可能性がある場合は何らかの表示をするように修正
させていただきます。
あと、バッファサイズの拡張と、常に「追加の条件」と同等となるオプションも
考えて、V8.11β4で修正させていただきます。

[ ]