私はたぶん単純なものがありませんが、s///
は変更された文字列を変数に割り当てていません。私はもっと簡単なs///
を試して、それは動作します。Mastering Regular ExpressionsのPerl置換の例が私のために働いていない
この例では、3つ以上ある場合は小数点以下の任意の桁をトリミングする必要があります。
my $price = 12.34567;
print "$price\n";
$price =~ s/(\.\d\d[1-9]?)d*/$1/;
print "$1\n"; # This is printing .345 correctly.
print "$price\n"; # This should be 12.345 but is unchanged.
my $story = "dog";
$story =~ s/(do)g/$1/;
print "$story\n"; # This works. It's changed to "do"
編集:3桁目がゼロの場合、2桁の数字の後にトリミングする必要があります。株価をPrettifying
」: ...常に小数点以下2桁を取り、それがゼロでない場合にのみ、3桁目を取るその後、他の桁を削除
があるべき '\ D 'の代わりにD''の。 –
バックスラッシュがありませんが、REは正しく表示されません。どの出力を '12.340123'に期待しますか? –
それはそれでした。 @Benjamin W. [書籍の抜粋] – user3064085