9ケタの数字、例えば「555555555」のような数字に3の倍数個ずつカンマを振り分ける際は、下記のように記述します。
s/(?<=\d)(?=(?:\d\d\d)+$)/,/
しかし、上記の数字がそれこそ「9ケタの数字、例えば「555555555」のような数字に3の倍数個ずつカンマを振り分ける際は、下記のように記述します。」という文章のように文字列の中に埋もれていた場合、
マッチしなくなります。マッチさせるために、末尾に三桁の数字、を意味する「$」を削除してしまうと、「えば「5,5,5,5,5,5,555」のような…」とカンマだらけになります。$が無くなったことで、残った条件が「左に数字、右に3の倍数個の数字」となるので、カンマだらけになる理由は、解かります。
疑問点は、なぜ$を消しただけでこのようにカンマだらけになってしまうのかです。
逆にいうと、なぜ末尾に三桁という条件を付けるとカンマだらけにならなくなるのかが解かりません。
ちなみに文字列中の数字にカンマをいれるときの正規表現は、「
s/(?<=d)(?=(?:\d\d\d)+)\b/,/
だと認識しております。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/24 10:25
2016/05/24 14:00