正規表現を使った検索で不審な動作No.23995
colder さん 07/11/05 13:39
 
秀丸エディタ ver7.04、正規表現DLL hmjre.dll ver1.87を使っています。
検索対象を『azbzcz』とし、検索パターンを『.z.z』としたとき、
『azbz』、『bzcz』の2箇所が検索されますが『cz』の部分が強調表示されません。
また、検索パターンを『(?<=.z).z』としたとき、『cz』の部分が検索されません。
これらは、バグでしょうか?

[ ]
RE:23995 正規表現を使った検索で不審な動No.23997
ENCODINGSHIFTJIS さん 07/11/05 15:04
 
動作から、マッチした後の、次の検索開始位置が違う、と解釈できます。

文字列検索:マッチすると、次の開始位置はマッチ列先頭の次の文字
強調:マッチすると、次の開始位置は マッチ列末尾の次の文字

強調表示動作の 速さを 求めると そうなるのかも。

[ ]
RE:23995 正規表現を使った検索で不審な動No.23998
秀丸担当 さん 07/11/05 15:10
 

>検索対象を『azbzcz』とし、検索パターンを『.z.z』としたとき、
>『azbz』、『bzcz』の2箇所が検索されますが『cz』の部分が強調表示されません。

調べてみたところ、正規表現の強調表示の場合は、ヒットした文字列の最後の文
字の次から続けて検索をするようになっていました。
ヒットした文字列の先頭の文字の次から検索するようになっているべきかもしれ
ません。
検索だけでなく強調表示定義にも関係していて、V7.00以前からずっとこうだっ
たので、急に仕様を変えていいものか慎重に考える必要がありそうです。
もし問題なければ近いうちに修正したいと思います。

>また、検索パターンを『(?<=.z).z』としたとき、『cz』の部分が検索されません。
>これらは、バグでしょうか?

これは、HmJre.dllの場合は検索開始位置より遡って前方一致などを判断しない
ためで、こういう動作になっています。
そういう話もあるということで、参考にさせていただきます。

[ ]
RE:23997 正規表現を使った検索で不審な動No.23999
ENCODINGSHIFTJIS さん 07/11/05 16:21
 
>強調表示動作の 速さを 求めると そうなるのかも。
aaaaaaaaaaB にマッチする強調定義で、行が長い場合、次の文字から検索すると、毎
回マッチして、N 2乗 オーダーの時間が 着色にかかる、前例がありました。
aaaaは 不定個数のaのパターン。

[ ]
RE:23999 正規表現を使った検索で不審な動No.24000
秀丸担当 さん 07/11/05 16:58
 

>aaaaaaaaaaB にマッチする強調定義で、行が長い場合、次の文字から検索すると、毎
>回マッチして、N 2乗 オーダーの時間が 着色にかかる、前例がありました。
>aaaaは 不定個数のaのパターン。

確かに、手元のバージョンで次の文字から強調するようにしたら、このパターン
で非常に遅くなりました。
やっぱり簡単に直してしまうのも良くないかもしれません。
強調表示ができたときからずっとこうだったと思うのですが、前例はあったでし
ょうか?

[ ]
RE:24000 正規表現を使った検索で不審な動No.24001
ENCODINGSHIFTJIS さん 07/11/06 11:25
 
>強調表示ができたときからずっとこうだったと思うのですが、前例はあったでしょ
>うか?

長い行のテキストを開くのに 時間がかかる → 強調表示を off にして
試す。
とかがあった頃に、発見された現象と 記憶してます。
文字列範囲の強調で、 囲まれた中--囲み終了 を定義していた場合でした。

[ ]
RE:23995 正規表現を使った検索で不審な動No.24002
ENCODINGSHIFTJIS さん 07/11/06 11:32
 
.z が 二個以上連続なら、
(.z){2,}

[ ]
RE:24001 正規表現を使った検索で不審な動No.24003
秀丸担当 さん 07/11/06 13:06
 

>長い行のテキストを開くのに 時間がかかる → 強調表示を off にして
>試す。
>とかがあった頃に、発見された現象と 記憶してます。
>文字列範囲の強調で、 囲まれた中--囲み終了 を定義していた場合でした。

そうでしたか。情報ありがとうございます。
確かにそういう話はあったと思いますが、今回のこととは別の条件だったかもし
れません。
次の文字から検索するかどうかは以前からずっと変わりないです。
下手にさわると問題が起きるかもしれないので、V7.xxではこのままとしておこ
うと思います。

[ ]
RE:24001 正規表現を使った検索で不審な動No.24008
colder さん 07/11/06 17:47
 
こういった事情があったのですね。
この件は、正規表現で強調する際の制限として了解します。
ただ、この動作は、固定文字列での強調と異なる動作なので、helpに制限事項として、
記載した方がいいと思います。

[ ]
RE:24008 正規表現を使った検索で不審な動No.24010
秀丸担当 さん 07/11/07 10:30
 

>こういった事情があったのですね。
>この件は、正規表現で強調する際の制限として了解します。
>ただ、この動作は、固定文字列での強調と異なる動作なので、helpに制限事項として、
>記載した方がいいと思います。

そうですね。ヘルプに書いておこうと思います。

[ ]