У меня есть регулярное выражение, которое я использую несколько раз в скрипте, где меняется одно слово, но остальная часть выражения остается прежней. Обычно я справляюсь с этим, просто создавая строку регулярного выражения в формате, подобном следующему примеру:
# Simple regex looking for exact string match
$regexTemplate = '^{0}$'
# Later on...
$someString = 'hello'
$someString -match ( $regexTemplate -f 'hello' ) # ==> True
Однако я написал более сложное выражение, в котором мне нужно вставить переменную в шаблон выражения и... синтаксис регулярного выражения и синтаксис форматирования строки начинают конфликтовать:
$regexTemplate = '(?<=^\w{2}-){0}(?=-\d$)'
$awsRegion = 'us-east-1'
$subRegion = 'east'
$awsRegion -match ( $regexTemplate -f $subRegion ) # ==> Error
Что приводит к следующей ошибке:
InvalidOperation: Error formatting a string: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Я знаю, в чем проблема, он видит один из моих квантификаторов выражения в качестве токена замены. Вместо того, чтобы выбирать подход со строковой интерполяцией или заменять {0}
самостоятельно, есть ли способ, которым я могу указать PowerShell/.NET заменить только токен с индексом 0? Или есть другой способ добиться желаемого результата с помощью строк формата?