|
replaceallの一回の置換で数値の演算をすることは基本的にはできないです。
マクロでやるとしたら、検索された文字列を取得してから、計算し、その後計算
されたものを挿入するということになります。
あるいは取得後にもう一度同じ個所を置換という方法でもいいと思います。
例えば以下のようなマクロになります。
setcompatiblemode 0x20000;
disabledraw;
gofiletop;
$s="昭和([0-9]{1,2})年";
while(1){
searchdown2 $s+"(?\\1)",regular;
if(result==false) break;
$found=gettext(foundtopx,foundtopy,foundendx,foundendy);
replaceup $s
,str(val($found)+1925)+"年"
,regular;
}
参考までの情報としてですが、何か関数を使うという意味では、replaceallの
一回の置換で、何らかの処理を加える手段として変換モジュールを使う方法があ
ります。
例えば、以下のような置換で、英単語の先頭(\1の部分)を大文字にして、それ以
降(\2の部分)を小文字にできたりします。
replaceall "([a-z])([a-z]*)", "\\(1,ToUpper)\\(2,ToLower)"
,nocasesense, regular;
これは標準の変換モジュールのToUpper関数とToLower関数を使っていますが、別
途用意された変換モジュールがあれば他の関数を使うことも可能です。
ただ以下の変換モジュールライブラリのページ
http://hide.maruo.co.jp/lib/hmconv/index.html
にアップされているものの中では加算に該当するものは無さそうでした。
標準の変換として、単純な数字の羅列の整数の加算/減算はあってもいいという
気がします。
|
|