регулярное выражение powershell удалить цифру

Используя Powershell, я пытаюсь удалить ведущие нули числовой части строки. Вот несколько примеров и ожидаемых результатов:

AB012 должен стать AB12

ABC010 должен стать ABC10

Я пробовал следующее, но он избавляется от всех нулей. Как я могу сказать, чтобы он удалял только начальные нули? Формат строки всегда будет состоять из букв, за которыми следуют цифры. Однако длина букв может быть разной.

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

Это будет отображать ABC1, и я хочу отобразить ABC10.

Спасибо.


person user2166281    schedule 07.05.2013    source источник


Ответы (3)


Это регулярное выражение ищет букву, за которой следует любое количество нулей, и сохраняет букву в шаблоне замены, но удаляет нули:

$x = $x -replace '([a-z])0*', '$1'
person Nate Hekman    schedule 07.05.2013

попробуйте это регулярное выражение с утверждениями просмотра назад и вперед

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

проблема в том, что если у вас есть строка типа «0AB0101», которая становится «0AB11», в этом случае используйте:

'(?<=\D)(0)(?=.+)'
person CB.    schedule 07.05.2013

Вот еще один вариант, который оценивает цифры как число:

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

Или с помощью метода TrimStart:

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