perl:在字母数字字符串中去除前导零

问题描述:

如何去除Perl中字母数字字符串的所有前导零?perl:在字母数字字符串中去除前导零

例如:

"03ABCDE" --> "3ABCDE"; 

"30ABCDE0123"--> "30ABCDE123"; 

"30XY09ZZZ0001" --> "30XY9ZZZ1" 

编辑:李四指出了正确的方向来解决这个问题,我做了这个代码来解决这个问题。谢谢!

$i =~s /0{1,}(?=[1-9])//g; 
+1

你必须更具体。 _Leading zeroes_暗示在字符串的开头。看起来这不是你想要的。 – simbabque

+0

你需要使用预见正则表达式来检查下列字符是否是一个数字,而不是0 –

+5

首先,它看起来你不想删除“前导零”,你想删除“前导零和零立即跟随一封信“。这是否准确?其次,StackOverflow不在这里为你写代码。它在这里可以帮助您解决代码中的问题。请告诉我们你已经拥有了什么。如果你还没有任何代码,那么你不需要StackOverflow,你想支付一个程序员。 –

您可以使用lookbehind来匹配前面有非数字的零。除此之外,还需要在字符串的开头匹配实际的前导零。

my @strings = qw(03ABCDE 30ABCDEXY09ZZZ0001); 
foreach (@strings) { 
    print "$_ --> "; 
    s/^0+|(?<=\D)0+//g; 
    print "$_\n"; 
} 

查看https://regex101.com/r/xF7uM9/1查看比赛演示。