不具合?:4.14 + HMJRE 1.12 で思うようにNo.06090
dszhm さん 04/11/10 14:17
 
秀丸4.14 + HMJRE 1.12 での置換で

検索:\n{2,}
置換:\n
大文字/小文字の区別:有り
正規表現:有り

で実行した場合、
「よくばり」を期待しましたが、
「ものぐさ」置換になってしまいます。

OS:Win2K PRO SP4
です。


[ ]
RE:06090 不具合?:4.14 + HMJRE 1.12 で思No.06091
ENCODINGSHIFTJIS さん 04/11/10 16:22
 
>検索:\n{3}

はヒットしませんから、昔からの内部動作
¥nのある検索は (¥nの数+1) 行 の内部だけに
制限されているのではないでしょうか。

[ ]
RE:06090 不具合?:4.14 + HMJRE 1.12 で思No.06092
秀まるお さん 04/11/10 16:28
 
 これは{n,m}指定に限らずですが、\nについて任意個数にヒットさせる指定は
出来ないです。これはHmJre側ではなくて、秀丸側の制限です。

 正規表現の中に「\n」が何個あるかで、その数の分だけまとめてHmJreに渡す
ようにはしているので、例えば最高で10個の\nにヒットすればいいって話ならば、

 (\n\n\n\n\n\n\n\n\n)|(\n{2,})

 みたいにすればいいです。つまり、正規表現のパターンの中に「\n」が10個
あれば、最高で10個の\nにヒットすることになります。

 そうやってうまく回避して欲しいです。

[ ]
RE:06092 不具合?:4.14 + HMJRE 1.12 で思No.06093
dszhm さん 04/11/10 16:40
 
> (\n\n\n\n\n\n\n\n\n)|(\n{2,})
>
> みたいにすればいいです。つまり、正規表現のパターンの中に「\n」が10個
>あれば、最高で10個の\nにヒットすることになります。
>
> そうやってうまく回避して欲しいです。

  幾つあるかわからないので、
  \n{2,}
  としたいのですが、
 繰り返すことで回避します。

[ ]
RE:06093 不具合?:4.14 + HMJRE 1.12 で思No.06094
秀まるお さん 04/11/10 17:24
 
 空行を削除するという目的のようなので、全置換を、置換しなくなるまで繰り
返せば一応目的は達成されると思います。


[ ]
RE:06094 不具合?:4.14 + HMJRE 1.12 で思No.06095
dszhm さん 04/11/11 09:36
 
> 空行を削除するという目的のようなので、全置換を、置換しなくなるまで繰り
>返せば一応目的は達成されると思います。

  マクロで行うとすれば、↓のようにすればいいですか?

 #replaced = 1;
 while(#replaced > 0)
 {
  replaceallfast "\n\n" , "\n" , regular;
  #replaced = result;
 }

[ ]
RE:06095 不具合?:4.14 + HMJRE 1.12 で思No.06096
Arimac さん 04/11/11 13:00
 
replaceallfast "^\\n" , "" , regular;
で良いのではないかと・・・(^^;

[ ]
RE:06096 不具合?:4.14 + HMJRE 1.12 で思No.06097
dszhm さん 04/11/11 13:18
 
>replaceallfast "^\\n" , "" , regular;

  「コロンブスの卵」ですね。
  (思いつかなかった・・・)
  確かにこれでうまくいきました。
  ありがとうございました。


[ ]