У меня есть сценарий 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
, которое близко к переменной, не интерпретируется как I ожидается.
Как это решить? Я попробовал Google, но безуспешно.