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

如何用regexp_replace替换字符串从后往前的首个匹配项

解决替换字符串最后一个匹配项的问题

直接使用带负向预查的正则表达式,就能精准定位并替换最后一个text,且不影响其他匹配项:

select regexp_replace('dont replace this text, but instead replace the last text <-- this one', '\btext\b(?!.*\btext\b)', 'ONE');

原理说明

  • \btext\b:匹配独立的text单词(避免误匹配包含text的其他字符串)
  • (?!.*\btext\b):负向预查规则,确保当前匹配的text后面不会再出现另一个text,以此锁定字符串中最后一个目标单词

之前的错误分析

  1. 第一条语句regexp_replace(..., "\\b(text)\\b", "ONE"):无匹配范围限制,会替换所有符合\btext\b的实例,导致两个text都被替换。
  2. 第二条语句regexp_replace(..., "\\b.*(text)\\b", "ONE"):.*是贪婪匹配,会从字符串开头一直匹配到最后一个text的位置,整个匹配范围覆盖了开头到最后一个text的全部内容,替换后这部分直接变成ONE,所以前面的文本全部丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:05:19