2013-05-11 122 views
2

我需要解析一些配置文件並找到匹配項。我已經簡化了這個問題。爲什麼powershell不會匹配反斜槓,即使它已被轉義?如果我從下面的代碼中刪除退格,它就可以工作。使用Powershell匹配變量匹配

查找$ B $中的一個:

$a="lorum [\test] ipsum" 
$b="[\test]" 

([regex]::Escape($a)) -match ([regex]::Escape($b)) 

回答

4

這是因爲你在逃避字符串本身。 -match之前的部分應該是普通字符串,而後面的部分需要是正則表達式模式。你的命令實際上做的是比較這些字符串(把它們當作普通字符串):

"lorum \[\\test\] ipsum" contains "[\test]" 

這是不正確的。嘗試將字符串$a與逃脫圖案$b配對:

$a="lorum [\test] ipsum" 
$b="[\test]" 

$a -match ([regex]::Escape($b)) 
+0

完美;謝謝您的幫助。 – 2013-05-11 12:04:25