使用Powershell,我試圖刪除字符串的數字部分的前導零。這裏有幾個例子和預期成果:powershell正則表達式刪除數字
AB012需要成爲AB12
ABC010需要成爲ABC10
我試過以下,但它擺脫全零。我怎麼能告訴它只刪除前導零?字符串的格式將始終是字母后跟數字。但是,字母的長度可能會有所不同。
$x = ABC010
$y = $x -replace '[0]'
$y
這將顯示ABC1,我希望顯示ABC10。
謝謝。
使用Powershell,我試圖刪除字符串的數字部分的前導零。這裏有幾個例子和預期成果:powershell正則表達式刪除數字
AB012需要成爲AB12
ABC010需要成爲ABC10
我試過以下,但它擺脫全零。我怎麼能告訴它只刪除前導零?字符串的格式將始終是字母后跟數字。但是,字母的長度可能會有所不同。
$x = ABC010
$y = $x -replace '[0]'
$y
這將顯示ABC1,我希望顯示ABC10。
謝謝。
這個正則表達式搜索一個字母后跟任意數字0,並將字母保留在替換模式中,但刪除零:
$x = $x -replace '([a-z])0*', '$1'
嘗試這個表達式與向後看和前瞻斷言
'(?<=.+)(0)(?=.+)'
的問題是,如果你有串像在這種情況下使用「0AB0101」即成爲「0AB11」:
'(?<=\D)(0)(?=.+)'
'(?<= +)(0)(= +?)'工作。謝謝!!! – user2166281 2013-05-07 14:34:20
這裏,用於評估的數字作爲編號另一種選擇:
PS> [regex]::replace('ABC010','(\d+)',{iex $args[0]})
ABC10
或者使用TrimStart方法:
PS> [regex]::replace('ABC010','(\d+)',{$args[0].ToString().TrimStart('0')})
ABC10
+1我以''(\ D)0 *','$ 1''結尾;) – 2013-05-07 14:36:42
'([a-z])0 *','$ 1'也有效。謝謝! – user2166281 2013-05-07 14:37:03