PowerShell字符串匹配和管道特征

时间:2011-08-21 10:59:33

标签: regex string powershell matching

我在PowerShell中匹配包含管道字符的字符串时遇到困难。匹配在以下情况下返回true,不应该:

> "Debug|x86" -match "Debug|x128"
True

我已尝试转义匹配参数管道符,但这不会改变意外结果,例如:

> "Debug|x86" -match "Debug`|x128" 
True

3 个答案:

答案 0 :(得分:8)

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

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

Debug\|x128

答案 1 :(得分:5)

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

> "Debug|x86" -match "Debug\|x128" 
False

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

答案 2 :(得分:1)

Chibacity和Shay都揭示了逃避正则表达式中元字符的正确方法。但是,如果您想了解有关-match运算符和其他字符串比较运算符的更多信息,您可能会发现本文有用: Harnessing PowerShell's String Comparison and List-Filtering Features。它配有一个单页挂图,用于枚举标量和数组上下文中的各种运算符。这是一个预览: enter image description here