Tim*_*oyd 2 regex string powershell matching
我在PowerShell中匹配包含管道字符的字符串时遇到困难.匹配在以下情况下返回true,但不应:
> "Debug|x86" -match "Debug|x128"
True
Run Code Online (Sandbox Code Playgroud)
我已经尝试转义匹配参数管道字符,但这不会改变意外的结果,例如:
> "Debug|x86" -match "Debug`|x128"
True
Run Code Online (Sandbox Code Playgroud)
如果您不确定需要转义哪些字符,请让Escape方法为您完成工作:
PS > [regex]::escape("Debug|x128")
Debug\|x128
Run Code Online (Sandbox Code Playgroud)
这是一个正则表达式,因此需要使用反斜杠进行转义,而不是PowerShell的反引号,例如:
> "Debug|x86" -match "Debug\|x128"
False
Run Code Online (Sandbox Code Playgroud)
由于它是正则表达式,如果管道字符未转义,则计算结果为"Debug或x128".