PowerShell字符串匹配和管道特征

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)

Sha*_*evy 8

如果您不确定需要转义哪些字符,请让Escape方法为您完成工作:

PS > [regex]::escape("Debug|x128")

Debug\|x128
Run Code Online (Sandbox Code Playgroud)


Tim*_*oyd 5

这是一个正则表达式,因此需要使用反斜杠进行转义,而不是PowerShell的反引号,例如:

> "Debug|x86" -match "Debug\|x128" 
False
Run Code Online (Sandbox Code Playgroud)

由于它是正则表达式,如果管道字符未转义,则计算结果为"Debug或x128".