使用 perl 正则表达式替换的零填充整数

zero padded integer with perl regex substitution

我想用正则表达式替换做一个零填充整数。例如,我有以下字符串:

my $string = '3-7+9-15';

并需要输出:

03-07+09-15

我知道我可以使用 sprintf,但我必须首先检索每个整数执行 sprintf,然后将整数重新连接成一个字符串:(

我想用正则表达式替换一次性完成。可能吗?

my $string = '3-7+9-15';
$string =~  s/\b(\d)\b/0/g;
say $string;

输出:

03-07+09-15

我会选择结合使用 sprintf 和正则表达式替换

use strict;
use warnings 'all';
use feature 'say';

my $s = '3-7+9-15';
$s =~  s{(\d+)}{ sprintf '%02d',  }ge;
say $s;

输出

03-07+09-15