powershell - 当组标识符靠近 PowerShell 中的变量时,字符串替换不起作用
问题描述
我有一个这样的 PowerShell 脚本:
$year = 2020
$string = 'Const conToYear As String = "2018"'
$newString = $string -replace '(Const conToYear As String = ")(\d{4})(")', "`$1$year`$3"
Write-Host $newString
它提供输出$12020"
,但我需要Const conToYear As String = "2020"
. 我在少数地方使用了类似的替换模式,使用组和变量并且它们起作用。
有趣的是,当我这样做时:
$year = 2020
$string = 'Const conToYear As String = "2018"'
$newString = $string -replace '(Const conToYear As String = ")(\d{4})(")', "`$1`$1$year"
Write-Host $newString
然后我得到Const conToYear As String = "$12020
,所以看起来第二次出现的$1
接近变量没有像我预期的那样被解释。
如何解决这个问题?我试过谷歌它,但没有成功。
解决方案
这是powershell 6及更高版本。参考捕获组需要做一些事情。但是您不必混合变量和替换运算符特殊的 $ 代码。
$year = 2020
$string = 'Const conToYear As String = "2018"'
$string -replace '(Const conToYear As String = ")(\d{4})(")',
{ $_.groups[1].value + $year + $_.groups[3].value }
Const conToYear As String = "2020"
推荐阅读
- laravel - 如何在通知集合中获取日期格式
- angular - Spring Oauth2 PKCE 授权
- json - 如何编写解析此 JSON 的 Dart 模型类?
- wordpress - 无法从 Ubuntu 18.04 EC2 实例上的 Wordpress 连接到 RDS mysql DB
- python - 如何使用 NaN 对列进行 json_normalize
- android - 我可以在 android 上运行带有选项的 V8 引擎吗?
- python - 将数据从 BigQuery 导入 SQL Server 数据库
- java - TimerTask.run() 中的命令执行顺序错误(在用 Java 编写的 Android 应用程序中)
- r - Dplyr count() 函数返回错误的结果
- mysql - 根据 LIKE 和 Wildcard 从另一个表中删除