我正在尝试使用后引用和局部变量串联的字符串替换模式:
(Get-Content $nuspecPath) | Foreach-Object {$_ -replace "(<version>).+(<\/version>)", "`$1$version`$2"} | Set-Content $nuspecPath
预期:<version>2.0-preview</version>
实际:2.0-preview</version>
但是,如果我在“$1 $version
$ 2”等变量之间添加空格,我会按预期获得<version> 2.0-preview </version>
。
思想?
谢谢, 丹
答案 0 :(得分:4)
嗯,这对我有用,因为你最初在PowerShell v4上有它。但当我遇到这样的问题时,我通常会用大括号来解决它,例如$ {1}
$version = '2.0-preview'
"<version>1.0.0.0</version>" -replace "(<version>).+(<\/version>)", "`${1}$version`$2"
通过将变量名称放在花括号中,PowerShell可以判断一个变量的结束位置和另一个变量的开始位置。此外,确认您的原始方法确实无法在我的某个PowerShell v3系统上运行。