我在代码<add key="Port" value="51130" />
中有一行,我想用传入的端口替换值。全部以“ 51”开头我希望能够用新的端口号替换必填的51 *。我想不通。
尝试了类似的东西
$content = " <add key="Port" value="51130" />
$port = "51128"
(Get-Content $content).Replace("51*","$($port)")
但是我知道那是文字,而不是通配符。
我也尝试过:
(Get-Content $content).Replace('51\d+',"$($port)")
但那里也没有运气。
答案 0 :(得分:1)
要使用正则表达式替换运算符,如果$content
包含目标字符串,则可以执行以下操作。
$content -Replace "51\d+",$port
如果$content
是路径,则可以运行Get-Content
,然后应用-Replace
。
(Get-Content $content) -Replace "51\d+",$port
LotPings提供了在声明后使用正面外观的语法,对于不想替换以51开头的字符串/文件中的所有数字的情况,这是更安全的:
$content -Replace '(?<=add key="Port" value=")51\d+',$port
.Replace()
的问题在于它不支持正则表达式。这是字符串类中的一种方法,用于替换文字字符串。
此外,这似乎是XML定义的一部分。创建XML对象并相应地更新属性可能会更好。