Вы можете использовать строку, которая автоматически расширяет переменные:
switch -regex (...) {
"<$primaryKey>(.+)</$primaryKey>" { ... }
}
вместо того, чтобы соединять все вместе с конкатенацией строк (что довольно уродливо). switch -RegEx
ожидает буквальную строку. Кроме того, нет необходимости экранировать <
и >
в регулярном выражении, поскольку они не являются метасимволами.
Если вам крайне необходимо выражение, которое генерирует строку (например, конкатенация строк по любой причине), то вы можете заключить в скобки:
switch -regex (...) {
('<'+$primaryKey+'>(.+)</'+$primaryKey+'>') { ... }
('<{0}>(.+)</{0}>' -f $primaryKey) { ... } # thanks, stej :-)
}
Вы также можете использовать выражения, которые явно сопоставляют регулярные выражения с фигурными скобками; см help about_Switch
.