PowerShell中Regex.Replace方法未替换首个匹配项问题求助
PowerShell正则替换失效问题解决办法
你的问题出在没有将正则替换的结果赋值回变量。[regex]类型的Replace方法不会直接修改原字符串变量,而是返回一个新的替换后的字符串,你需要把这个结果重新赋值给$lineadd,后续才能使用替换后的内容。
修改后的代码如下:
while(1) { $prompt = read-host -prompt [edit] if($prompt -eq "exit") { Write-Output("Exiting edit.") exit } if($prompt.StartsWith("add")) { $lineadd = $prompt [regex]$pattern = "add" # 将替换结果赋值回变量 $lineadd = $pattern.Replace($lineadd, "", 1) Add-Content -Path ".\$file" -Value "$lineadd" Get-Content ".\$file" } }
另外,也可以用PowerShell原生的-replace操作符简化代码,效果一致:
$lineadd = $lineadd -replace "^add", "", 1
这里加^锚定字符串开头,确保只替换开头的"add",和你用StartsWith判断的逻辑更匹配。
内容的提问来源于stack exchange,提问作者Benygreen
相关产品推荐
相关产品推荐

