正規表現の*や?の下検索でNo.00409
水銀水 さん 01/11/20 10:55
 
●正規表現の「*」「?」の動作(?)
 表題の動作ですが、下記のサンプルで最上部の改行位置から「A*」「A?」で正規表
現検索させると、[下検索]([下候補]も)が効かないようなので、一応、ご報告
いたします。[上検索]([上候補])は問題ないみたいです(?)

・再現法
 再現方法は、A*やA?で正規表現検索をする。検索開始位置が下記のサンプルで最上
部の場合、[下候補]を実行しても、カーソル位置が動かない。
 一方、カーソルを最下部に移動させて[上候補]を実行すると、「A*」「A?」も正
しく動作する。(「A+」は正しく動きます)

(サンプル)


AAA↓
AA↓
A↓




・思い当たるフシ
 ArimacさんのPerl5互換のDLL等と、JRE32.dllをいろいろ差し替えている時に発生
したような気がします(Perl5互換DLLは問題なく動いていたのですが…?)。以降、
こちらの環境では再インストールして、前の状態に戻すため、HMSETUPでレジストリ
を読み直すと(V3.11b7でも、V3.08でも)しても再現するようになってしまいました
…トホホ。

・正常な動作も
 ただし、再インストール直後またはHSETUP.EXEで「秀丸の設定をすべて抹消」を実
行した直後の秀丸では、上記の正規表現はすべて正しく動作します。直前の状態をレ
ジスト読みとると、上記の動作になってしまいます。
 これらからすると、どこかの「動作環境」などの設定が原因になっているのかとも
思いますが、どの設定か、今のところ全くわかりません。

(以前は問題なかったA  気がしますし、環境の影響もあるかも…。再現すると良い
のですが…。もしかしたら、私が完全に勘違いしているとか(^^;;; また、もしかし
て地上すれすれで飛行中のこちらの環境に問題があるのかもしれませんが、ちょっと
他のマシンで確認する余裕がないもので、中途半端な報告ですいません)


[ ]
RE:00409 正規表現の*や?の下検索でNo.00411
Arimac さん 01/11/20 12:50
 
BRegIfが最初の改行で長さ0でマッチで返してるようです。
仕事中なので家に帰ってから調べます(^^;

[ ]
RE:00411 正規表現の*や?の下検索でNo.00413
Arimac さん 01/11/20 12:57
 
A*やA?だと0文字でもマッチするので
この場合、カーソル位置は移動しなくなります(^^;
以前はカーソル位置を無条件に+1してたので
多分、1文字づつ移動してたと思います(^^;

[ ]
RE:00411 正規表現の*や?の下検索でNo.00414
水銀水 さん 01/11/20 14:21
 
>BRegIfが最初の改行で長さ0でマッチで返してるようです。

 BRegIf(もちろんBREGEXP.DLLも)には大変、お世話になっております。ただ、現
在、ほとんどデフォルトの状態で、BRregIfに慣れてしまったカラダで難儀しており
ます(^^;;;
 で、正規表現そのものは、常人が深く立ち入るととんでもないことになりそうなの
で、適当なんですが、秀丸をアンインストールして、再度、インストールしても、HM
SETUP.EXEで特定の環境をレジストリに復帰させると、この検索ができなくなるとい
う動作です。(インストール直後では正しく動くのも不思議なんですけど)


[ ]
RE:00413 正規表現の*や?の下検索でNo.00415
水銀水 さん 01/11/20 14:24
 
>A*やA?だと0文字でもマッチするので
>この場合、カーソル位置は移動しなくなります(^^;
>以前はカーソル位置を無条件に+1してたので
>多分、1文字づつ移動してたと思います(^^;

 やはり、そこいらへんでしたか…。
ただ、[上候補]は正しく動作する当たりが、正規表現のイジワルな所ですね…。と
いうか、[上候補]のA*というのは、どんな文字を想定したら良いのか、想像もつか
んです(^^;;;

[ ]
RE:00409 正規表現の*や?の下検索でNo.00416
TAKA さん 01/11/20 15:09
 
TAKA です。

>・正常な動作も
> ただし、再インストール直後またはHSETUP.EXEで「秀丸の設定をすべて抹消」を実
>行した直後の秀丸では、上記の正規表現はすべて正しく動作します。直前の状態をレ
>ジスト読みとると、上記の動作になってしまいます。
> これらからすると、どこかの「動作環境」などの設定が原因になっているのかとも
>思いますが、どの設定か、今のところ全くわかりません。

外しているかもしれませんが、「動作環境→編集→高度な編集→
カーソル位置の次の文字から検索を開始」をOFFにしているので
はないでしょうか?
そのため、カーソル位置のヌルにヒットしているのだと思います。
このオプションは下検索の時のみ有効です。
^^^^^^^^^^^^^^^
上検索ではカーソル位置を含まないので、一つ前のヌルにヒットし、
カーソルが移動します。

現在は、ヌルにヒットした場合には、検索したというフラグが立た
ないので、もう一度検索してもカーソル位置から検索することにな
り、結局カーソルが移動しないようです。
ヌルにヒットした場合は、フラグを立てて、2回目の検索では次の
文字から検索するようにした方がよさそうです。
どうでしょうか? > 秀丸担当さん

インストールした場合は、このオプションは今までと同じ動作をさ
せるために、ONになっていたと思います。

カーソル位置から検索する機能のないVer3.08でも再現するのは、
謎ですね。

[ ]
RE:00416 正規表現の*や?の下検索でNo.00417
水銀水 さん 01/11/20 15:30
 
 いつもお世話になっております。

>外しているかもしれませんが、「動作環境→編集→高度な編集→
>カーソル位置の次の文字から検索を開始」をOFFにしているので
>はないでしょうか?
>そのため、カーソル位置のヌルにヒットしているのだと思います。
>このオプションは下検索の時のみ有効です。
>^^^^^^^^^^^^^^^
>上検索ではカーソル位置を含まないので、一つ前のヌルにヒットし、
>カーソルが移動します。

 ピンポ〜ンでした!(と、現状では思います(^^))

 確かにこのオプションと、この正規表現の動作は問題かもしれませんね。ただ、こ
うした部分、1ついじると副作用も心配で、またまた秀丸担当さんの睡眠時間が少な
くなってしまいそうですね…(^^;

[ ]
RE:00416 正規表現の*や?の下検索でNo.00421
秀丸担当 さん 01/11/21 15:33
 
>現在は、ヌルにヒットした場合には、検索したというフラグが立た
>ないので、もう一度検索してもカーソル位置から検索することにな
>り、結局カーソルが移動しないようです。
>ヌルにヒットした場合は、フラグを立てて、2回目の検索では次の
>文字から検索するようにした方がよさそうです。
>どうでしょうか? > 秀丸担当さん

その通りですね。
ちょとt厄介ですが、、考えてみます。

[ ]