69973


￥01,900のパン →￥1,900のパン  
￥0,900のパン →￥900のパン  
にする方法を教えてください。  
「数字のカンマを外して、数字の前の0を削除して、数字の3桁毎のカンマを付ける」以外の方法がありますか？  
よろしくお願いします。

[金額の、正規表現の書き方](https://ja.stackoverflow.com/questions/23609/%e9%87%91%e9%a1%8d%e3%81%ae-%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e3%81%ae%e6%9b%b8%e3%81%8d%e6%96%b9)  
（参考）正規表現で数字の前の0（ゼロ）を削除する方法  
<http://www.php-mysql-linux.com/regular-expression/no0/>


CC BY-SA 4.0
2020-08-29T21:28:45.647
69972
2020-08-30T02:37:26.313
2020-08-29T21:39:53.050
17199
17199
question
正規表現
金額の、正規表現の書き方:数字の前の0（ゼロ）を削除する方法


Perlなら、こうすればたぶん十分です。

[code]

    my $price = "￥01,900";
    $price =~ s/￥(0+,?)*/￥/;
    
[/code]

(携帯を使っていますので、試すことができません)

例外: `￥0のパン`に不対応。


CC BY-SA 4.0
2020-08-29T21:57:03.727
69973
2020-08-29T21:57:03.727
41425
69972
answer


> 「数字のカンマを外して、数字の前の0を削除して、数字の3桁毎のカンマを付ける」以外の方法がありますか？

`￥`に続く`0`と`,`を削除する(マッチする条件から外す)方法が考えられます。

例1 `￥`に続く`0`と`,`を削除する`sed`の例

[code]

    $ sed 's/^￥[0,]*/￥/' <<< "￥01,900"
    ￥1,900
    $ sed 's/^￥[0,]*/￥/' <<< "￥0,900"
    ￥900
    $ sed 's/^￥[0,]*/￥/' <<< "￥00,000,012"
    ￥12
    $ sed 's/^￥[0,]*\(.*\)/￥\1/' <<< "￥000"
    ￥
    
[/code]

例2 `￥`に続く`0`と`,`をマッチする条件から外す`sed`の例

[code]

    $ sed 's/^￥[0,]*\(.*\)/￥\1/' <<< "￥01,900"
    ￥1,900
    $ sed 's/^￥[0,]*\(.*\)/￥\1/' <<< "￥0,900"
    ￥900
    $ sed 's/^￥[0,]*\(.*\)/￥\1/' <<< "￥00,000,012"
    ￥12
    $ sed 's/^￥[0,]*\(.*\)/￥\1/' <<< "￥000"
    ￥
    
[/code]

いずれの方法も0の場合単独の`￥`になってしまいます。  
結果に対して単独の`￥`を`￥0`に置換すればいいのですが、いっぺんに対応する方法は思いつきませんでした。


CC BY-SA 4.0
2020-08-30T02:37:26.313
69977
2020-08-30T02:37:26.313
35558
69972
answer