gpt4 book ai didi

regex - 带有命名组的替换字符串中的 Powershell 变量

转载 作者:行者123 更新时间:2023-12-04 15:21:12 25 4
gpt4 key购买 nike

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

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

我的问题是:如何用变量 $x 而不是文字 xxx 替换,即类似于:
$s -Replace "(?<s1>....)(?<s2>...) '${s2}$x${s1}'

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

最佳答案

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

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

输出 : AAA,BBB
说明 :

Powershell 将评估双引号字符串,用反勾转义 $ 符号将确保不评估这些并为 -Replace 运算符提供有效字符串。
  • msdn about replace operator
  • msdn about escape characters

  • 或通过 Get-Help about_escape & Get-Help about_comparison_operators

    关于regex - 带有命名组的替换字符串中的 Powershell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30543753/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com