在替换中使用变量

时间:2016-07-26 14:05:49

标签: regex powershell

我有一个文本文件,想要在PowerShell中使用变量内容进行正则表达式/替换。

  • 文件:RewriteEngine on RewriteBase /Software RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
  • Powershell中的变量my.json
  • 搜索:$version
  • version : "something"替换为变量"something"内容

这是我尝试过的。搜索和替换按预期工作,但结果是 $version

version : "$version"

2 个答案:

答案 0 :(得分:4)

为了能够在替换字符串中使用变量,您需要使用双引号替换字符串,这意味着您需要转义反向引用和嵌套双引号:

(Get-Content my.json) -replace '...', "`$1`"$version`"" | ...

答案 1 :(得分:2)

Ansgar的答案完全有效,但`转义序列可能很难看,并且会妨碍可读性。

我个人会使用-f格式运算符来连接'$1'字符串文字和$version的值:

(Get-Content my.json) -replace '...',('$1{0}' -f $version)