正規表現を使用して、ファイル内のテキストを照合および置換しようとしています。キャプチャ グループも使用しています。置換テキストでは、展開したいキャプチャ グループとその他の変数を使用しています。問題は、他の変数の値が数字で始まると、それらが展開され、存在しないキャプチャされたグループとして展開しようとしていると思います。
差し替え前の文章はこちら
merchantId="101"
Read-Host コマンドの入力として 101 を使用して置き換えた後のテキストを次に示します。
$1101"
そして、これを使用してテキストを一致させて置き換えます
$merchant = Read-Host 'What merchant would you like to use?'
$configPath = '..\src\config.cfg'
(Get-Content $configPath) | ForEach-Object {
$_ -replace "(merchantId="").*("")\s*$", "`$1$merchant`$2"
}
マーチャントは常に数字なので、ユーザーがマーチャントに 101 のようなものを入力すると、置換テキストは $1101 に拡張されているように見えるため、powershell はもちろん存在しない 1101 番目のキャプチャされたグループを探していると思います。
私はpowerhsellを初めて使用し、構文が少し奇妙で、どうすればよいかわかりません。