Switch -PowerShellの存在
-
22-09-2019 - |
質問
$source |% {
switch -regex ($_){
'\<'+$primaryKey+'\>(.+)\</'+$primaryKey+'\>' {
$primaryKeyValue = $matches[1]; continue; }
}
Switch-Regexで動的キー値を使用したいのですが、それは可能ですか?
解決
変数を自動的に展開する文字列を使用できます。
switch -regex (...) {
"<$primaryKey>(.+)</$primaryKey>" { ... }
}
すべてを文字列の連結と一緒につなぐのではなく(これはかなりugいもの)。 switch -RegEx
文字通りの文字列が期待されます。さらに、逃げる必要はありません <
と >
正規表現では、それらはメタチャラクターではないためです。
文字列(どちらの理由で文字列の連結など)を生成する式が必死に必要な場合は、その周りに括弧を付けることができます。
switch -regex (...) {
('<'+$primaryKey+'>(.+)</'+$primaryKey+'>') { ... }
('<{0}>(.+)</{0}>' -f $primaryKey) { ... } # thanks, stej :-)
}
また、ブレースで正規表現マッチを明示的に行う表現を使用することもできます。見る help about_Switch
.
所属していません StackOverflow