我在PS脚本中有一个使用-match
的比较语句
$propValue = (Get-ItemProperty "Registry::$($c.Name)" -Name "$($p)")."$($p)"
$productName = "C:\Program Files (x86)\MyApplication\MyApp"
if ($propValue -match $productName)
{
// Do something
}
执行时,脚本在Powershell中抛出错误\p{X}字符转义错误。这是怎么回事?我该如何解决这个问题?
谢谢。
发布于 2021-03-24 12:07:45
-match
是正则表达式运算符,而\p{X}
是用于描述Unicode块的正则表达式转义序列。
这里发生的情况很可能是一个字符串值,如
sometext\p{b8ee6b4b-fefe-4f77-916f-cb8df996599d}
因此,正则表达式引擎将识别p{...}
序列,并在确定b8ee6b4b-fefe-4f77-916f-cb8df996599d
不是有效的unicode块描述符后抛出错误。
在将$productName
用作正则表达式模式之前,对它的值进行转义,它将按照您的预期工作:
if ($propValue -match [regex]::Escape($productName))
{
// Do something
}
https://stackoverflow.com/questions/66780396
复制