|
正規表現によるマクロの上方向置換に関しての質問です。
次のようなデータを用意します。
123
1234
12345
123456
1234567
12345678
123456789
1234567890
カーソルを末尾において以下のマクロを実行します。
//----------------------------------------------------
while( 1 ) {
replaceup "(?<=[0-9])([0-9]{3})", ",\\1", regular;
if( !result ) break;
}
endmacro;
//----------------------------------------------------
期待する結果は,
123
1,234
12,345
123,456
1,234,567
12,345,678
123,456,789
1,234,567,890
ですが,実際には次のようになります。
123
1,234
1,2345
123,456
123,4567
1,2345,678
1,2345,6789
123,4567,890
指定の仕方がおかしいのでしょうか?
ちなみに置換の部分の 3 を 2 に変えて
replaceup "(?<=[0-9])([0-9]{2})", ",\\1", regular;
とすると,
1,23
1,234
1,23,45
1,23,456
1,23,45,67
1,23,45,678
1,23,45,67,89
1,23,45,67,890
となります。この場合も不完全です。
山紫水明
|
|