我有以下代码:-
'\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/