$ 100 =“$ env:APPDATA / somthing”
$ iamhere =“C:/ example”
$ 100 = $ 100 -replace“`$ env:APPDATA \ somthing”,“$ iamhere”
我希望100美元替换为其内容的$ iamhere(以文本形式),但我收到此错误。
正则表达式模式无效:$ env:APPDATA \ somthing。
在行:1字符:1
$ 100 = $ 100 -replace“`$ env:APPDATA \ somthing”,“$ iamhere” ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~
- CategoryInfo:InvalidOperation:($ env:APPDATA \ somthing:String)[],RuntimeException
- FullyQualifiedErrorId:InvalidRegularExpression
我认为这是因为我试图用目录替换一些文本,但我希望$ iamhere变量中的文本 谢谢,CollinScripter
答案 0 :(得分:8)
-replace
运算符将解析您提供的输入字符串作为正则表达式。 \
字符是正则表达式中的特殊字符,因此如果您希望字面处理它,则需要通过在其前面添加\
来转义它。幸运的是.NET为您提供了一个方便的功能:
# ~> [Regex]::Escape("$env:APPDATA/somthing")
C:\\Users\\username\\AppData\\Roaming/somthing
所以只需像这样更新你的例子:
$100 = $100 -replace [Regex]::Escape("$env:APPDATA/somthing"), $iamhere
请注意,您不需要$ iamhere周围的引号(但因为它是一个字符串,所以没有区别)。
答案 1 :(得分:4)
您可以改用*.replace
$100 = "$env:APPDATA/somthing"
$iamhere = "C:/example"
$100 = $100.replace("$env:APPDATA/somthing", "$iamhere")
那么它将不使用正则表达式