2016-08-04 94 views
-3

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

例如:

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

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

"30XY09ZZZ0001" --> "30XY9ZZZ1" 

編輯:李四指出了正確的方向來解決這個問題,我做了這個代碼來解決這個問題。謝謝!

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

你必須更具體。 _Leading zeroes_暗示在字符串的開頭。看起來這不是你想要的。 – simbabque

+0

你需要使用預見正則表達式來檢查下列字符是否是一個數字,而不是0 –

+5

首先,它看起來你不想刪除「前導零」,你想刪除「前導零和零立即跟隨一封信「。這是否準確?其次,StackOverflow不在這裏爲你寫代碼。它在這裏可以幫助您解決代碼中的問題。請告訴我們你已經擁有了什麼。如果你還沒有任何代碼,那麼你不需要StackOverflow,你想支付一個程序員。 –

回答

1

您可以使用lookbehind來匹配前面有非數字的零。除此之外,還需要在字符串的開頭匹配實際的前導零。

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

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

相關問題