开关-REGEX在PowerShell中
-
22-09-2019 - |
题
$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
.
不隶属于 StackOverflow