2013-05-07 92 views
1

使用Powershell,我試圖刪除字符串的數字部分的前導零。這裏有幾個例子和預期成果:powershell正則表達式刪除數字

AB012需要成爲AB12

ABC010需要成爲ABC10

我試過以下,但它擺脫全零。我怎麼能告訴它只刪除前導零?字符串的格式將始終是字母后跟數字。但是,字母的長度可能會有所不同。

$x = ABC010 
$y = $x -replace '[0]' 
$y 

這將顯示ABC1,我希望顯示ABC10。

謝謝。

回答

2

這個正則表達式搜索一個字母后跟任意數字0,並將字母保留在替換模式中,但刪除零:

$x = $x -replace '([a-z])0*', '$1' 
+0

+1我以''(\ D)0 *','$ 1''結尾;) – 2013-05-07 14:36:42

+0

'([a-z])0 *','$ 1'也有效。謝謝! – user2166281 2013-05-07 14:37:03

2

嘗試這個表達式與向後看和前瞻斷言

'(?<=.+)(0)(?=.+)' 

的問題是,如果你有串像在這種情況下使用「0AB0101」即成爲「0AB11」:

'(?<=\D)(0)(?=.+)' 
+0

'(?<= +)(0)(= +?)'工作。謝謝!!! – user2166281 2013-05-07 14:34:20

0

這裏,用於評估的數字作爲編號另一種選擇:

PS> [regex]::replace('ABC010','(\d+)',{iex $args[0]}) 
ABC10 

或者使用TrimStart方法:

PS> [regex]::replace('ABC010','(\d+)',{$args[0].ToString().TrimStart('0')}) 
ABC10