我正在对一些数据进行正则表达式,如果 $_ 在“替换”部分,我也会得到内容。我为 $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