windows PowerShell字符串用变量值替换函数

m4pnthwp  于 2023-02-25  发布在  Windows
关注(0)|答案(2)|浏览(180)

我们可以提到变量in - replace函数的例子:

$value="V2"
$prop="Groovy=V3"

$prop -replace "(?<conf>Groovy)=(?<version>[vV]\d)" , "${conf}=${value}"
x0fgdtte

x0fgdtte1#

${conf} * 是 * 在正则表达式替换字符串中引用捕获的正确语法,但它 * 也 * 是一个有效的PowerShell变量表达式-因此您需要将替换字符串两边的双引号替换为单引号,以防止PowerShell在字符串传递给-replace运算符之前尝试展开变量:

$value="V2"
$prop="Groovy=V3"

$prop -replace "(?<conf>Groovy)=(?<version>[vV]\d)" , ('${conf}=' + ${value})

另一种选择是使用反勾号对$进行转义:

$prop -replace "(?<conf>Groovy)=(?<version>[vV]\d)" ,"`${conf}=${value}"
6qftjkof

6qftjkof2#

powershell7版本,带有scriptblock第二个参数。这可能并不容易,但不需要对命名为“conf”的捕获组进行特殊转义。

$value = 'V2'
'Groovy=V3' -replace '(?<conf>Groovy)=[vV]\d', 
  { $_.groups['conf'].value + '=' + $value }

Groovy=V2

或者简单地说,第一个捕获组:

$value = 'V2'
'Groovy=V3' -replace '(Groovy)=[vV]\d', { $_.groups[1].value + '=' + $value }

Groovy=V2

相关问题