555555555という数字の羅列に、正規表現を使って三桁ごとにコンマを挿入したいとき、
s/(?<=\d)(?=(\d\d\d)+$)/,/
のように記述することで、555,555,555となります。
これは、既に読んだ部分に数字があって、まだ読んでない部分に三つの数字の羅列のカタマリが一つ以上在って且つそれが文の末尾でもあるときにマッチするものです。
ここで疑問なのですが、なぜ、5,555,555,55とならないのでしょうか。後読みの部分は、量指定子が無いため"数字(\d)が一つ"であって数字が一つ"以上"とはならないように思います。
しかし、マッチしたものをみると555,5...と5が三つ並んでいます。指定した文字が一つ以上を意味する「+」が無いのになぜ三つの5のあとにコンマが入ったのだろうと疑問に思っております。
今考える限りだと、位置指定の「$」が指定してあるためコンマから見て末尾が三の倍数の数値でなければならないので量指定子「+」が無くても555,555,555となったのかと推測したのですがどうなのでしょうか。
つまり、末尾に三の倍数個だけ数が無いとマッチしないので、量指定子「+」がないが555,555,555にしてやろうとPCが忖度してくれたのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。