Я бы сделал это так:
function GetStringBetweenTwoStrings($firstString, $secondString, $importPath){
#Get content from file
$file = Get-Content $importPath -Raw
#Regex pattern to compare two strings
$regex = [regex] $('{0}(.*?){1}' -f [Regex]::Escape($firstString), [Regex]::Escape($secondString))
$result = @()
#Perform and return the result
$match = $regex.Match($file)
while ($match.Success) {
$result += $match.Groups[1].Value
$match = $match.NextMatch()
}
return $result
}
и вызов функции:
GetStringBetweenTwoStrings -firstString '${' -secondString '}' -importPath '<PATH_TO_YOUR_INPUT_FILE>'
Поскольку функция теперь заботится о том, чтобы экранирование строк не давало значений $firstString
и $secondString
, вам не нужно беспокоиться об этом при вызове функции.
Кроме того, поскольку во входном файле может быть больше совпадений, функция теперь возвращает массив совпадений.
т.е.. если ваш входной файл содержит что-то вроде этого:
<input id="paymentMethod_VISA" type="radio" name="${input.cardType}" value="VISA" checked="checked" style="width: 1.5em; height: 1.5em;"/>
<input id="paymentMethod_OTHER" type="radio" name="${input.otherType}" value="Other" checked="checked" style="width: 1.5em; height: 1.5em;"/>
возвращенные совпадения будут
input.cardType
input.otherType