perl:在字母数字字符串中去除前导零
问题描述:
如何去除Perl
中字母数字字符串的所有前导零?perl:在字母数字字符串中去除前导零
例如:
"03ABCDE" --> "3ABCDE";
"30ABCDE0123"--> "30ABCDE123";
"30XY09ZZZ0001" --> "30XY9ZZZ1"
编辑:李四指出了正确的方向来解决这个问题,我做了这个代码来解决这个问题。谢谢!
$i =~s /0{1,}(?=[1-9])//g;
答
您可以使用lookbehind来匹配前面有非数字的零。除此之外,还需要在字符串的开头匹配实际的前导零。
my @strings = qw(03ABCDE 30ABCDEXY09ZZZ0001);
foreach (@strings) {
print "$_ --> ";
s/^0+|(?<=\D)0+//g;
print "$_\n";
}
查看https://regex101.com/r/xF7uM9/1查看比赛演示。
你必须更具体。 _Leading zeroes_暗示在字符串的开头。看起来这不是你想要的。 – simbabque
你需要使用预见正则表达式来检查下列字符是否是一个数字,而不是0 –
首先,它看起来你不想删除“前导零”,你想删除“前导零和零立即跟随一封信“。这是否准确?其次,StackOverflow不在这里为你写代码。它在这里可以帮助您解决代码中的问题。请告诉我们你已经拥有了什么。如果你还没有任何代码,那么你不需要StackOverflow,你想支付一个程序员。 –