我有一个这样的替换语句:
$var1 = "http"
$var2 = "1.2.3.4"
$json = $json -replace '(url = ["''])(.*)(:\/\/)(.*)(["''])', "`$1$var1`$3$var2`$5"
应该原样保留在行下面:
url = "http://1.2.3.4"
更改为
url = "http$31.2.3.4"
据我了解,`$3
应该替换为://
,就像`$5
被"
替换一样。
有没有我经常丢失的规则?
编辑:
我检查了多台计算机,这是我发现的内容:
现在我真的不知道发生了什么。也许与语言环境有关?
设置:
特定设置:
我知道这似乎没有联系,但我一点也不知道。
编辑2:
当RegEx组后的第一个字符(甚至转义)是一个数字(甚至作为变量)时,似乎RegEx不能按预期工作。但是仍然不知道如何省略它。
答案 0 :(得分:1)
$1
),该捕获组可能会干扰以下文本,请将其也括在${1}
大括号中## Q:\Test\2019\01\10\SO_54131783.ps1
$json = 'url = "http://localhost"'
$var1 = "http"
$var2 = "1.2.3.4"
$json = $json -replace '(url = (["''])).*?(://).*?(\2)',
"`${1}${var1}`${3}${var2}`${2}"
$json
url = "http://1.2.3.4"