Powershell,转义正则表达式转义方法中不存在的字符串变量中的特定字符
Powershell, escaping specific character in string variable not present in regex escape method
来自 this post I learned that I can use [Regex]::Escape() to escape all the commonly escaped characters 中的字符串变量。问题是我将使用包含 & 字符的路径,然后在 URL 中使用它进行 RestAPI 调用,并且该转义方法不会转义 & 字符。
当路径包含 & 时 API 将其解释为 URL 中的运算符并且未正确解析:
$MyPath = "\Server\Share\Something & Something Else"
$MyURL= "http://localhost/Address/to/APIResource/"
Invoke-RestMethod -Method Get -Uri ("$MyURL" + "?path=$MyPath") -UseDefaultCredentials
?path=$MyPath 是问题所在,因为 $MyPath 包含 & 因此无法工作。如何转义 $MyPath 中的 & 字符以使其与 RestAPI?
一起使用
I learned that I can use [Regex]::Escape()
to escape all the commonly escaped characters in string variables
现在你会发现那根本不是真的:)
[regex]::Escape()
仅 转义字符,否则可能会被解释为转义序列 由 .NET 的正则表达式语法定义 - 它专为这种情况而设计,并且只保证在这种情况下工作。
对于 URI 参数,您需要使用 [uri]::EscapeDataString()
:
Invoke-RestMethod -Uri ("$MyURL" + [uri]::EscapeDataString("?path=$MyPath")) ...
来自 this post I learned that I can use [Regex]::Escape() to escape all the commonly escaped characters 中的字符串变量。问题是我将使用包含 & 字符的路径,然后在 URL 中使用它进行 RestAPI 调用,并且该转义方法不会转义 & 字符。
当路径包含 & 时 API 将其解释为 URL 中的运算符并且未正确解析:
$MyPath = "\Server\Share\Something & Something Else"
$MyURL= "http://localhost/Address/to/APIResource/"
Invoke-RestMethod -Method Get -Uri ("$MyURL" + "?path=$MyPath") -UseDefaultCredentials
?path=$MyPath 是问题所在,因为 $MyPath 包含 & 因此无法工作。如何转义 $MyPath 中的 & 字符以使其与 RestAPI?
一起使用I learned that I can use
[Regex]::Escape()
to escape all the commonly escaped characters in string variables
现在你会发现那根本不是真的:)
[regex]::Escape()
仅 转义字符,否则可能会被解释为转义序列 由 .NET 的正则表达式语法定义 - 它专为这种情况而设计,并且只保证在这种情况下工作。
对于 URI 参数,您需要使用 [uri]::EscapeDataString()
:
Invoke-RestMethod -Uri ("$MyURL" + [uri]::EscapeDataString("?path=$MyPath")) ...