回答編集履歴
3
「逆順にして置き換え処理」、「繰り返し」追加
    
        answer	
    CHANGED
    
    | @@ -9,4 +9,21 @@ | |
| 9 9 | 
             
            s/(¥d¥d¥d)(?=¥d)/$1,/g
         | 
| 10 10 | 
             
            ```
         | 
| 11 11 |  | 
| 12 | 
            -
            でもこれだと「左から3桁ずつ」なので、よくないですね。
         | 
| 12 | 
            +
            でもこれだと「左から3桁ずつ」なので、よくないですね。
         | 
| 13 | 
            +
            終端から先頭方向へマッチする表現が無いので、文字を逆順にするか、繰り返し処理する必要があると思います。
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ```regex
         | 
| 16 | 
            +
            # 逆順にして置き換え処理
         | 
| 17 | 
            +
            $a = '「555555555」';
         | 
| 18 | 
            +
            $a = reverse $a;
         | 
| 19 | 
            +
            $a =~ s/(\d\d\d)(?=\d)/$1,/g;
         | 
| 20 | 
            +
            $a = reverse $a;
         | 
| 21 | 
            +
            print $a;
         | 
| 22 | 
            +
            ```
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            ```regex
         | 
| 25 | 
            +
            # 繰り返し
         | 
| 26 | 
            +
            $a = '「555555555」';
         | 
| 27 | 
            +
            while($a =~ s/(?<=\d)(\d\d\d)(?=\D)/,$1/){};
         | 
| 28 | 
            +
            print $a;
         | 
| 29 | 
            +
            ```
         | 
2
後読み
    
        answer	
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            マッチしていたら5の個数は減るはずですよね。結果を見ると文字間(0文字)にマッチしているようです。
         | 
| 2 | 
            -
            先読み(<?=)・後読み(?=)の間の「本体にあたる部分」がないので、 | 
| 2 | 
            +
            先読み(<?=)・後読み(?=)の間の「本体にあたる部分」がないので、先読みの(<?=)を外せば意味を成すようになるのではないでしょうか。
         | 
| 3 3 |  | 
| 4 4 | 
             
            ,を複数入れるのでgオプションは必須です。
         | 
| 5 5 | 
             
            3桁ごとに一回の置き換えなので、(¥d¥d¥d)+とはできません。9桁でも,ひとつだけの出力になってしまいます。
         | 
| 6 6 | 
             
            元の文字は1文字も失わないようにするので、(?:)ではなく()を使って、後方参照できるようにします。
         | 
| 7 7 |  | 
| 8 8 | 
             
            ```regex
         | 
| 9 | 
            -
            s/( | 
| 9 | 
            +
            s/(¥d¥d¥d)(?=¥d)/$1,/g
         | 
| 10 10 | 
             
            ```
         | 
| 11 11 |  | 
| 12 | 
            -
            これでい | 
| 12 | 
            +
            でもこれだと「左から3桁ずつ」なので、よくないですね。
         | 
1
s
    
        answer	
    CHANGED
    
    | @@ -6,7 +6,7 @@ | |
| 6 6 | 
             
            元の文字は1文字も失わないようにするので、(?:)ではなく()を使って、後方参照できるようにします。
         | 
| 7 7 |  | 
| 8 8 | 
             
            ```regex
         | 
| 9 | 
            -
            /(?<=¥d)(¥d¥d¥d)/$1,/g
         | 
| 9 | 
            +
            s/(?<=¥d)(¥d¥d¥d)/$1,/g
         | 
| 10 10 | 
             
            ```
         | 
| 11 11 |  | 
| 12 12 | 
             
            これでいかがでしょうか。
         | 
