具有命名组的替换字符串中的Powershell变量

时间:2015-05-30 07:56:19

标签: regex powershell replace

以下的Powershell替换操作与正则表达式中的命名组s1和s2(仅用于说明,而不是正确的语法)工作正常:

$s -Replace "(?<s1>....)(?<s2>...)" '${s2}xxx${s1}'

我的问题是:如何用变量$ x代替文字xxx,即类似:

$s -Replace "(?<s1>....)(?<s2>...) '${s2}$x${s1}'

这不起作用,因为Powershell不会替换单引号字符串中的变量,但如果替换字符串放在双引号中,则命名组解析不再起作用,例如“$ {s2} $ x $ {s1} ”

1 个答案:

答案 0 :(得分:4)

@PetSerAl评论是正确的,这是测试它的代码:

$sep = ","
"AAA BBB" -Replace '(?<A>\w+)\s+(?<B>\w+)',"`${A}$sep`${B}"

<强>输出AAA,BBB

<强>解释

Powershell将评估双引号字符串,使用反向标记转义$符号将确保不评估这些字符串并为-Replace运算符提供有效字符串。

或通过Get-Help about_escape&amp; Get-Help about_comparison_operators