一部のデータに対して正規表現を実行しています。$_が「置換」セクションにある場合は、コンテンツも取得します。$ replaceでさまざまなことを試しましたが、この動作を止めることができないようです。[regex] :: escape()も試しましたが、エスケープ文字だけで同じことをすることになります。
置換で$_を許容できる必要があります。私はそれを別のものにして後で修正を行うことができますが、それは醜いので、むしろ避けたいと思います。
最後に、$ replace ='$ anythingelse'が期待どおりに機能しているように見える場合、$_のみがこの問題を引き起こしているように見えます。すべての解析を無効にできれば、それも機能します。
スクリプト:
$contents = 'foo' $replace = '$_ bar' $final = $contents -replace 'oo', $replace Write-Output "Contents: $contents" Write-Output "Replace: $replace" Write-Output "Final: $final"
出力:
Contents: foo Replace: $_ bar Final: ffoo bar
システム:Windows 7、PSH 2、64ビット
だから私は何か間違ったことをしているのですか、それともこれは本当にバグですか?
6/29編集:
交換できるように交換しました。これはばかげているので、解析を無効にする方法があるはずです(これにより、実行も少し速くなります)。
$contents = 'foo' $replace = '$_ bar' **$rep = $replace -replace '\$','$$$'** $final = $contents -replace 'oo', $rep Write-Output "Contents: $contents" Write-Output "Replace: $replace" Write-Output "Final: $final"
出力
Contents: foo Replace: $_ bar Final: f$_ bar