【发布时间】:2019-01-10 15:19:53
【问题描述】:
我有一个这样的替换语句:
$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 已替换为 "。
有什么我经常错过的规则吗?
编辑:
我检查了多台计算机,发现如下:
- 相同的代码在其他计算机上运行良好(在 Windows Server 2016 和 Windows 10 上测试),
- 相同的代码在通过远程桌面 (Windows Server 2016) 连接的 Azure VM 上运行良好,
- 在我的计算机 (Windows Server 2019) 上,如所述那样失败,
- 在与第 2 点相同的 VM 上。使用我的计算机上的远程桌面也失败了。
现在我真的不知道发生了什么。也许与语言环境有关?
设置:
- 地点:美国
- 语言:英语(美国)
- 键盘布局:PLP
具体设置:
- 数字格式:-123,456,789.00
- 一周的第一天:星期一
- 时间格式:HH:mm:ss
- 日期格式:yyyy-mm-dd
我知道这似乎没有连接,但我根本不知道。
编辑2:
当(甚至转义)RegEx 组之后的第一个字符是数字(甚至作为变量)时,RegEx 似乎无法按预期工作。但仍然不知道如何省略它。
【问题讨论】:
-
我声明了
$json = 'url = "http://localhost"'并使用了你的代码。我确实得到了正确的结果,而且没有 3 美元。 -
`是转义字符。所以$3将被视为字符串而不是变量。您需要转义转义字符,这样它就不会转义$。 (我在这里转义为代码而不是文本) -
@T-Me - 已编辑,谢谢
-
@SagePourpre 请查找编辑说明。如有任何帮助,我将不胜感激。
-
你为什么要用正则表达式来解析json?
标签: regex powershell