2

我需要解析一些配置文件并找到匹配项。我已经将问题简化为这个。为什么即使它已被转义,powershell 也不匹配反斜杠?如果我从下面的代码中删除退格键,它会起作用。

在 $a 中找到 $b:

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

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

1 回答 1

5

这是因为您正在转义字符串本身。之前的部分-match应该是一个普通的字符串,而之后的部分需要是一个正则表达式模式。您的命令实际上所做的是比较这些字符串(将它们视为普通字符串):

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

这从来都不是真的。尝试将字符串$a与转义模式匹配$b

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

$a -match ([regex]::Escape($b))
于 2013-05-11T10:15:19.837 回答