#◆ 目的
数値の桁を揃えたいときに、数字の先頭に0をいれることで
桁数を揃えたいことがあります。
例えばIDを3桁揃えにしたいときは
ID:1
ID:12
ID:123
↓↓
ID:001
ID:012
ID:123
となります。
ただし、4桁が存在した場合は
ID:1234
とそのまま表示させるものとします。
#◆ 検索対象
ID:1
ID:12
ID:123
ID:1234
#◆ 検索文字列、置き換え文字列
1回では出来ないため、2回処理します。
まずは、3桁を超える量の0埋めをします。
(ID:)(\d+)
↓↓
$1000$2
ID:0001
ID:00012
ID:000123
ID:0001234
次に、3桁に調整します。
(ID:)0*(\d{3,})
↓↓
$1$2
ID:001
ID:012
ID:123
ID:1234
#◆ 解説
分解して考えます。
(ID:)
(\d+)
↓↓
$1
000
$2
(ID:)
0*
(\d{3,})
↓↓
$1
$2
...
まずは、下記の文字列を探索します。
(ID:)
置き換え後に再利用するため ( )
で囲みます。※1つ目
(\d+)
次に、数字も ( )
で囲みます。※2つ目
最低限1文字の数字がないと意味ないので、
・*
(0回以上の繰り返し)ではなく
・+
(1回以上の繰り返し)を利用。
検索にHITした値はそのまま再利用できますが、
◎文字あるから、☆文字を足す
などの振り分け処理は出来ません。
そのためいったん0を多めに入れて、次に任意の桁に調整します。
(ID:)
再度同じ文字列で探索開始
0*
多めに埋めた0を最長マッチ(多めに入れた分は削除)
(\d{3,})
0埋めのあとに3桁以上の数字
真ん中が、最長マッチなので、最後の数字は基本は3桁だが
4桁以上でもちゃんと取得できる
$1
$2
あとは、最初と最後をくっつけるだけ