В дополнение к полезный ответ Матиаса с краткой альтернативой, основанной на операторе -replace
:
# PowerShell [Core] only (v6.2+) - see bottom for Windows PowerShell solution.
PS> '0.0.3', '1.123.3' -replace '(?<=\.)[^.]+$', { 1 + $_.Value }
0.0.4
1.123.4
Regex (?<=\.)[^.]+$
соответствует последнему компоненту номера версии (без учета предыдущего .
в совпадении).
Блок сценариев { 1 + $_.Value }
заменяет этот компонент с его значением, увеличенным на 1.
Для решений по увеличению любых компонентов с номером версии, включая правильную обработку версии [semver]
цифры, см. этот ответ .
В Windows PowerShell , где синтаксис -replace
на основе блоков сценариев не поддерживается, Решение является более громоздким, поскольку оно требует прямого использования типа. NET System.Text.RegularExpressions.Regex
:
PS> '0.0.3', '1.123.3' | foreach {
[regex]::Replace($_, '(?<=\.)[^.]+$', { param($m) 1 + $m.Value })
}
0.0.4
1.123.4