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

如何用REGEXP_SUBSTR提取字符串最后两个双引号间的内容?

正则提取最后两个双引号间内容的解决方法

问题场景

现有目标字符串:

a:3:{s:8:"ref_type";s:4:"user";s:3:"tid";s:18:"TXID17073204182661";s:7:"message";s:19:"3757000431691375718";}

需要提取最后两个双引号之间的内容「3757000431691375718」,原使用语句REGEXP_SUBSTR(wml.data, '[^:]+$')返回结果为"3757000431691375718";},不符合需求。

可行解决方法

  • 方法1:利用捕获组精准匹配
    使用正则定位最后一对双引号,并捕获其中的内容:

    REGEXP_SUBSTR(wml.data, '"([^"]+)"[^"]*$', 1, 1, NULL, 1)
    

    逻辑说明:

    • "([^"]+)":匹配双引号包裹的内容,括号内为要捕获的目标
    • [^"]*$:匹配该双引号对之后到字符串结尾的所有非双引号字符
    • 末尾的1指定返回第一个捕获组的内容
  • 方法2:分两步截取(适配不支持捕获组的场景)

    1. 先截取到最后一个双引号之前的字符串:
      REGEXP_SUBSTR(wml.data, '.*"')
      
    2. 再提取该结果中最后一个双引号之后的内容:
      REGEXP_SUBSTR(REGEXP_SUBSTR(wml.data, '.*"'), '[^"]+$')
      
  • 方法3:反向断言匹配(部分数据库支持)
    若数据库支持反向正则断言,可直接匹配倒数第二和最后一个双引号间的内容:

    REGEXP_SUBSTR(wml.data, '(?<=")[^"]+(?="[^"]*$)')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:06:04