使用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