Как часть buildscript в powershell, я пытаюсь извлечь номер версии из строки, используя регулярное выражение. Предполагается, что число в формате xx.yy (например, 10.6) Мне нужна часть Integer (в этом примере это будет 10), а часть дроби (пример: 6)Извлечение значения из регулярных выражений powershell
Я хочу иметь метод, который проверяет, что оба моих шаблона существуют, и после этого извлекает числа. (Я очень новичок в PowerShell, и я пытаюсь избегать использования C# функции, а Powershell себя.)
Я пытался сделать это:
$integralPart="A"
$fractionPart="B"
function GetVersion {
param([string]$strVersion)
$integralPattern="^[0-9]+(?=\.)"
$fractionalPattern="(?<=\.)[0-9]+$"
#Check if string consists of an integral and fractional part
If ($strVersion -match $integralPattern -eq $True -and $strVersion -match $fractionalPattern -eq $True)
{
$strVersion -match $integralPattern
$integralPart = $matches[0]
$strVersion -match $fractionalPattern
$fractionalPart = $matches[0]
}
else
{
Write-Host "You did not enter a double with an integer and a fractional part (eg. 10.6)"
Exit
}
}
GetVersion (Read-Host 'Enter program version')
Write-Host $integralPart
Write-Host $fractionPart
При этом, я надеялся, что $ integralPart и $ fractionalPart будут содержать мои числа, при этом они соответствуют значениям, которые они должны
Может ли кто-нибудь объяснить, как это можно сделать?
Какой результат вы получите? –
Проблема в том, что переменные внутри функции не те, которые вы указали в верхней части. Используйте решения из [powershell, устанавливающего глобальную переменную из функции, где глобальное имя переменной является переменной, переданной функции) (http://stackoverflow.com/questions/12535419/powershell-setting-a-global-variable-from- a-function-where-the-global-variable-n) –
А, должно быть проверено. $ matches [0] на самом деле DOES содержит правильные значения .... но я все равно должен что-то делать не так, поскольку $ integPart и $ fractionPart все же заканчиваются значениями, которые они инициализировали с помощью –