かっこつき半角数字の連番No.07620
でがらし さん 15/06/18 17:57
 
 半角かっこ内の半角数字を連番にするように、下記のマクロを書きました。ところ
が、半角かっこがついていない半角数字も連番になります。半角かっこ内の半角数字
だけを連番にするには、どこを修正すべきなのか、ご教示ください。

 例を挙げます。下記の左側の数字が右側のようになります。

(4)       (1)
(6)       (2)
(6)       (3)
 1   -->   4
 2         5

 Windows8.1、秀丸8.52です。

---------------------------------------

gofiletop;
 #i = 1;
 while( 1 ) {
 searchdown2 "([0-9]+)", regular;
 if(!result) break;
 insert str(#i);
 #i = #i + 1;
 }

---------------------------------------

[ ]
RE:07620 かっこつき半角数字の連番No.07621
でるもんたいいじま さん 15/06/18 18:10
 
でるもんた・いいじまです。

> (4)       (1)
> (6)       (2)
> (6)       (3)
> 1   -->   4
> 2         5
>
> gofiletop;
> #i = 1;
> while( 1 ) {
> searchdown2 "([0-9]+)", regular;
> if(!result) break;
> insert str(#i);
> #i = #i + 1;
> }

searchdown2の引数の正規表現が問題です。
([0-9]+) の両端の括弧は、その部分を \1 として参照できるように
するためのタグです。
今回は括弧の中の数字がいくつであるかを取得する必要はありませんから
( ) は不要ですし、逆に括弧そのものにマッチする必要がありますから
\( \) が必要です。文字列の中で正規表現の円記号を使うときは \\ とします。

次のようにしてみてください。

gofiletop;
 #i = 1;
 while( 1 ) {
 searchdown2 "\\([0-9]+\\)", regular;
 if(!result) break;
 insert "(" + str(#i) + ")";
 #i = #i + 1;
 }

[ ]
RE:07621 成功しましたNo.07622
でがらし さん 15/06/18 20:52
 
 ご教示のマクロで期待通りの連番にすることができました。
 \は ( の前に付けたり、はずしたりして試していたんですが、2つ繰り返すこと
が頭に浮かびませんでした。さっそくのご教示、ありがとうございました。

[ ]