数字を3桁ごとにカンマで区切る

「置換」の正規表現サンプル

やりたいこと

数字を3桁ごとにカンマで区切る

 

正規表現

「置換前」の指定:(?<=[0-9])(?=([0-9]{3})+$)
「置換後」の指定:,

赤文字:メタ文字

※参考にしたサイト:https://www.javadrive.jp/regex-basic/writing/index2.html

 

置換結果

置換前

1
22
333
4444
55555
666666
7777777
aaaa

置換後

1
22
333
4,444
55,555
666,666
7,777,777
aaaa

赤文字:置換された文字列

 

解説

置換前:(?<=[0-9])(?=([0-9]{3})+$)
■(?<=[0-9])
 (?<=~):肯定後読みを表します。
 [0-9]:0~9のいずれか1文字を表します。

 よって、(?<=[0-9])は0~9のいずれか1文字の末尾位置にヒットします。

■(?=([0-9]{3})+$)
 (?=~):肯定先読みを表します。
 [0-9]:0~9のいずれか1文字を表します。
 {3}:直前のパターンを3回繰り返すことを表します。
    よって、[0-9]{3}は000~999のいずれかを表します。
 +:直前のパターンの1回以上の繰り返しを表します。
 $:行末を表します。

 よって、(?=([0-9]{3})+$)は行末から000~999のパターンに一致する
 箇所(パターンの繰り返し)の先頭位置にヒットします。

置換後:,
 置換前でヒットした位置に「,」を挿入します。