$source |% {
switch -regex ($_){
'\<'+$primaryKey+'\>(.+)\</'+$primaryKey+'\>' { 
$primaryKeyValue = $matches[1]; continue; }

}

我想使用Switch-Regex使用动态钥匙值,这可能吗?

有帮助吗?

解决方案

您可以使用自动扩展变量的字符串:

switch -regex (...) {
    "<$primaryKey>(.+)</$primaryKey>" { ... }
}

而不是将所有内容与字符串串联(相当丑陋)拼凑在一起。 switch -RegEx 期望一个字符串。此外,没有必要逃脱 <> 在正则表达中,因为那不是metacharacters。

如果您迫切需要一个生成字符串的表达式(例如,无论出于哪个原因),则可以将括号放在其周围:

switch -regex (...) {
    ('<'+$primaryKey+'>(.+)</'+$primaryKey+'>') { ... }
    ('<{0}>(.+)</{0}>' -f $primaryKey) { ... } # thanks, stej :-)
}

您还可以使用明确与牙套进行正则匹配的表达式;看 help about_Switch.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top