我很難在PowerShell中匹配包含管道字符的字符串。比賽在下列情況下返回true,當它不應該:PowerShell字符串匹配和管道字符
> "Debug|x86" -match "Debug|x128"
True
我試圖逃避比賽的說法豎線,但這並不改變意想不到的結果,如:
> "Debug|x86" -match "Debug`|x128"
True
我很難在PowerShell中匹配包含管道字符的字符串。比賽在下列情況下返回true,當它不應該:PowerShell字符串匹配和管道字符
> "Debug|x86" -match "Debug|x128"
True
我試圖逃避比賽的說法豎線,但這並不改變意想不到的結果,如:
> "Debug|x86" -match "Debug`|x128"
True
這是正則表達式所以需要用反斜槓進行轉義,而不是PowerShell的反引號,例如:
> "Debug|x86" -match "Debug\|x128"
False
由於它是一個正則表達式,如果管道字符沒能逃脫,其值爲「Debug或X128" 。
如果你不知道你需要逃避的字符,讓逃生方法爲你做的工作:
PS > [regex]::escape("Debug|x128")
Debug\|x128
兩個Chibacity和吉文都透露了適當的方式來逃避的元字符你的正則表達式。但是,如果您想了解更多關於-match運算符和其他字符串比較運算符的信息,您可能會發現這篇文章有用: Harnessing PowerShell's String Comparison and List-Filtering Features。它包含一個頁面掛圖,枚舉標量和數組上下文中的各種運算符。這裏有一個預覽:
+1好答案。 –