【问题标题】:zero padded integer with perl regex substitution零填充整数与 perl 正则表达式替换
【发布时间】:2017-09-01 13:38:59
【问题描述】:

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

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

想要输出:

03-07+09-15

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

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

【问题讨论】:

  • 为什么对此投反对票?这似乎是一个合理的问题。
  • @dawg:大概是因为 OP 没有显示任何代码,并且似乎没有努力自己解决问题。
  • @borodin,正如我所说,我已经做了一些搜索,因为我有一个 sprintf 的解决方案,但想要一个使用正则表达式的一次性解决方案......
  • @skualito:是的,您似乎没有尝试编写正则表达式解决方案。我没有否决你的问题,我只是想回答 dawg 的评论。

标签: regex perl substitution


【解决方案1】:

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

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

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

输出

03-07+09-15

【讨论】:

    【解决方案2】:
    my $string = '3-7+9-15';
    $string =~  s/\b(\d)\b/0$1/g;
    say $string;
    

    输出:

    03-07+09-15
    

    【讨论】:

    • s/\b(?=\d\b)/0/g
    最近更新 更多