You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何替换字符串里的最后一个双引号

PowerShell替换字符串最后一个双引号的解决方案

问题描述

需要将字符串中的最后一个双引号(")替换为KKK,输入示例:

"ABCD"|"EFGH"|"IJK" "|"LMNO"|"PQRST"|"WXYZ"

期望输出:

"ABCD"|"EFGH"|"IJK" "|"LMNO"|"PQRST"|"WXYZKKK

尝试命令-replace ('$"',"KKK")未达预期效果。

原命令失效原因

你使用的正则表达式$"存在逻辑错误:在单引号包裹的正则规则中,$被当作普通字符而非行尾锚点,该表达式实际匹配的是**$字符紧跟双引号**的场景,根本无法定位到字符串的最后一个双引号。

可行解决方案

方案1:使用正向否定先行断言

通过正则匹配「后面没有其他双引号」的那个双引号(即最后一个),命令如下:

$inputStr = '"ABCD"|"EFGH"|"IJK" "|"LMNO"|"PQRST"|"WXYZ"'
$outputStr = $inputStr -replace '(")(?!.*")', 'KKK'
$outputStr

正则规则解释:

  • ("):匹配一个双引号并完成捕获
  • (?!.*"):正向否定先行断言,确保当前匹配的双引号之后不存在其他双引号

方案2:捕获最后一个双引号前的全部内容

通过捕获组提取最后一个双引号之前的所有内容,再拼接KKK完成替换,命令如下:

$inputStr = '"ABCD"|"EFGH"|"IJK" "|"LMNO"|"PQRST"|"WXYZ"'
$outputStr = $inputStr -replace '(.*)"', '$1KKK'
$outputStr

正则规则解释:

  • (.*)":.*贪婪匹配任意字符直到遇到最后一个双引号,(.*)捕获这部分前置内容
  • $1KKK:将捕获的前置内容($1)与KKK拼接,替换原匹配的「前置内容+最后一个双引号」整体

内容的提问来源于stack exchange,提问作者Pooja Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:16:15