regex - 如何将 RegEx token 传递给 RegEx 替换中的 PowerShell

我有以下代码:-

'\u0026' -replace '(\u)(\d{4})', '$$([char]0x$2)'

这显然会导致:-

$([char]0x0026)

如果我将 RegEx 替换为可扩展字符串:-

'\u0026' -replace '(\\u)(\d{4})', "$([char]0x`${2})"

然后我会得到:-

Unexpected token '0x`$' in expression or statement.

如果我将事情简化为:-

'\u0026' -replace '(\\u)(\d{4})', "0x`${2}"

然后我可以得到:-

0x0026

但是,我想要的是将“0x0026”转换为一个字符,以便将“\u0026”替换为“&”。但是,似乎不可能以这种方式将 RegEx 替换标记传递给 PowerShell 子表达式。如果您将两种语言分开:-

'\u0026' -replace '(\\u)(\d{4})', "$([char]0x0026) 0x`${2}"

然后下面会产生:-

& 0x0026

这很棒,因为它表明 PowerShell 子表达式在 RegEx 替换中确实有效,如转换后的 & 符号所示。

我是 RegEx 的新手。我已经达到极限了吗?

最佳答案

显然,您想要反转义一个转义正则表达式。您可以使用 .net [regex] unescape 执行此操作方法:

[Regex]::Unescape('Jack\u0026Jill')

产量:

Jack&Jill

关于regex - 如何将 RegEx token 传递给 RegEx 替换中的 PowerShell 子表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67445665/

相关文章:

python - 基于字典值映射Python列表

r - 将列中以冒号分隔的字符串拆分为 R 中的不同列

python - 将 VSCode 更新到 1.56.1 后,出现错误 : "Cannot acti

react-native - 部署 key 为空 appcenter 代码推送 cli

amazon-web-services - CloudFormation YAML - 带有条件语句

python - 有没有办法缩短多个 if 语句?

python - Python 中的 Hangman 游戏

c++ - 在 C++ 中定义类枚举值的 std::vector 的缩写语法

fortran - Fortran 中的嵌套名单

visual-studio-code - 删除 VSCode 中的 Sublime 文本主题