如果值只包含零,我如何删除所有前导零,但保留最后一个零?
例如:
my $number = "0000";我想要:
my $number = "0";我试过了:
$number =~ s/^0*//; 但这当然删除了本例中的所有零。
发布于 2011-04-15 22:55:15
这应该是可行的:
$number =~ s/^0*(\d+)$/$1/;
0 -> 0
0000 -> 0
0001 -> 1编辑:事实证明这有点太复杂了。这也应该是可行的:
$number =~ s/0*(\d+)/$1/;但我不确定哪个更好,这取决于用例。
一定要看看Oesor的答案:它也很不错,不涉及正则表达式。
发布于 2011-04-15 23:07:24
这不需要作为正则表达式来完成。
my @nums = qw/ 00000 000 000001 002 00000005 00000064 /;
@nums = map { $_ + 0 } @nums;发布于 2011-04-15 23:31:14
$number =~ s/^0+(?=\d)//;正向前视确保至少剩下一个数字,使用+而不是*意味着如果没有前导零,则跳过替换。
如果您正在尝试标准化单个字符串中的数字组,只需使用\b而不是^,并进行全局替换:
my $data = "0225 0000 030";
$data =~ s/\b0+(?=\d)//g;https://stackoverflow.com/questions/5678455
复制相似问题