如何解决Powershell 中格式错误的 \p{X} 字符转义
我有一个在 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} 字符转义。 这里发生了什么?我该如何解决这个问题?
谢谢。
解决方法
-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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。