Regex 使用replace时无法摆脱反斜杠
我希望使用PowerShellRegex 使用replace时无法摆脱反斜杠,regex,powershell,Regex,Powershell,我希望使用PowerShellreplace功能替换部分网络路径。我在如何处理反斜杠方面遇到困难(\) 上面的代码将产生一个错误,因此我研究了使用[Regex]:Escape进行转义,但它不会替换文本: [Regex]::Escape( "\\Share\Users\Location\Username") -ireplace [Regex]::Escape("\\Share\Users"),[Regex]::Escape("\\NewShare\AllUsers") 这就是我得到的: \\\
replace
功能替换部分网络路径。我在如何处理反斜杠方面遇到困难(\
)
上面的代码将产生一个错误,因此我研究了使用[Regex]:Escape进行转义,但它不会替换文本:
[Regex]::Escape( "\\Share\Users\Location\Username") -ireplace [Regex]::Escape("\\Share\Users"),[Regex]::Escape("\\NewShare\AllUsers")
这就是我得到的:
\\\\Share\\Users\\Location\\Username
我只需要:
\\Share\Users
替换为\\NewShare\AllUsers
生成\\NewShare\AllUsers\Location\Username
目前我对正则表达式的知识有限,所以我想知道是否有人能帮我:)
\
是正则表达式中的一个特殊字符,而\Users
中的\U
使它查找一个不存在的特殊命令U
。您需要避开反斜杠:
"\\Share\Users\Location\Username" -ireplace "\\\\Share\\Users", "\\NewShare\AllUsers"
基本上,
[RegEx]::Escape()
是正确的方法,但关键是只在实际为正则表达式的参数(第二个)上使用它。您应该能够使用ireplace,只需像这样调整第一个参数:
"\\Share\Users\Location\Username" -ireplace "\\\\Share\\Users","\\NewShare\AllUsers"
注意,我必须避开反斜杠,因为它被视为正则表达式,而第一个和第三个参数被视为字符串。谢谢。这很有道理。对不起,山姆,Tessellingheckler刚刚打败了你。无论如何,谢谢你。
"\\Share\Users\Location\Username" -ireplace "\\\\Share\\Users","\\NewShare\AllUsers"