powershell - Powershell 中格式错误的 \p{X} 字符转义
问题描述
我有一个-match
在 PS 脚本中使用的比较语句
$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}
列在注册表中,因此正则表达式引擎将识别该序列并在确定该序列不是有效的 unicode 块描述符p{...}
后抛出错误。b8ee6b4b-fefe-4f77-916f-cb8df996599d
在将其用作正则表达式模式之前转义值,$productName
它将按您的预期工作:
if ($propValue -match [regex]::Escape($productName))
{
// Do something
}
推荐阅读
- angular - 显示两个日期之间的差异
- swift - 'seek(to:)' 在 iOS 11.0 中已弃用:
- reactjs - 从 App.js 访问 redux 商店中的状态
- python - 有没有办法在 ROS RViz 中可视化 Drake SceneGraph?
- r - R dplyr:使用变量名调用`count()`(现在不推荐使用`count_()`)
- powershell - Invoke-WMIMethod 转换为 Invoke-CimMethod 与 ciminstance 作为参数错误
- django - Django - 预定事件
- javascript - “this”值,在使用 Javascript 中的工厂函数、模块、事件侦听器和 IIFE 创建井字游戏时
- java - Android 应用程序连接到数据库
- kotlin - Kotlin-Coroutines - 如何同时拥有两个阻塞方法并返回第一个完成的值?