[▲前のスレッド]

[7573] 正規表現で文字列中の数字の桁をそろえたい。 
2013/2/17 (日) 00:20:23 ろろ
Mozilla/4.7 [ja] (Win95; U)
a123         a123
a45    --->  a045
a6           a006

置換前 (\D+)(\d)\n
置換後 ${1}00${2}
置換前 (\D+)(\d\d)\n
置換後 ${1}0${2}

教えて下さい。
一度の置換でできますか?よろしくお願いします。


[7574] Re: 正規表現で文字列中の数字の桁をそろえたい。 
2013/2/18 (月) 00:20:10 しみづ
INCM1.23c

perlで組むなら、拡張子をplsにして、さしずめ

$seltext = GetSelectedString(0);
$seltext =~ /(\D+)(\d+)/;
$head = $1;
$num = $2;


$seltext = sprintf("%s%.3d",$head,$num);
InsText("$seltext");

かな。

macマクロでは無理かな。


[7578] Re:正規表現で文字列中の数字の桁をそろえたい。 
2013/3/12 (火) 06:02:15 あかま
Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.14
サクラエディタの置換で一度にこれを置換する方法は思いつきませんでしたが、wshのjsマクロで置換処理を一度で済ますスクリプトを組むなら
> Editor.SelectAll();
> Editor.InsText(Editor.GetSelectedString().replace(/(\D+)(\d+)

([\r\n])/g,function(d,a,b,c){return a+(("00"+b).slice(-3))+c;}));
でいけます。
perlなどでも出来ると思いますが、あらかじめ
> eval(Editor.GetSelectedString());
とかいう内容のマクロを組んでおいて、対象のファイル中に上述のマクロを手書きして範囲選択してマクロ実行とすれば比較的手軽に実行出来ます。
> eval("Editor.SelectAll();Editor.InsText(Editor.GetSelectedString()."+Editor.GetSelectedString()+");");
とするなどで実行時の記述量を減らすと使いやすいかもしれません。

置換に使うキーワードの入力を一回だけ、という条件ならば
> 置換前(\D+)(\d{1,2})([\r\n])
> 置換後${1}0$2$3

として「全て置換(A)」を複数回実行すれば行けます。
邪道ですがUWSCなどで「全て置換(A)」を連打するスクリプトを外部コマンドやマクロから実行すれば操作としては一回入力一回実行にできます。
マクロから直接置換ダイアログの入力が読めれば外部ツールに頼らずに済むんですが、現状そういうマクロ関数はないようなので外部ツール越しにサクラエディタを操作するなどが限界ではないかと思います。


[7584] Re2:正規表現で文字列中の数字の桁をそろえたい。 
2013/3/24 (日) 07:47:18 ろろ
Mozilla/4.7 [ja] (Win95; U)
▼ しみづ様 あかま様
ありがとうございます。
gawkで組むなら
{
split(gensub(/([^0-9]+)([0-9]+)/, "\\1,\\2","g", $0),arr,",")
print arr[1] sprintf("%04d",arr[2])
}
検索ワード
@0埋め
Aゼロパディング
Bゼロフィル
C数字部分の桁数を揃える
D数字の桁をそろえる
E数値の整理 末尾からn番目の数値の桁合わせ(Flexible Renamerより)


[▼次のスレッド]
INCM/CMT
Cyclamen v3.81