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

如何在Oracle SQL/PLSQL中用REGEXP_SUBSTR提取指定字符间内容

解决Oracle正则提取指定分隔符间内容的问题

你的正则写法存在逻辑错误,导致提取结果不符合预期:

  • 原正则中的[^99|10]是字符类,它的含义是匹配除了9、1、0、|之外的任意单个字符,这和你想匹配99或10作为起始分隔符的需求完全不符。
  • 后续的(.)([^(>)]+)会额外匹配多余的字符,最终导致返回内容包含了起始分隔符之前的部分。

正确的SQL语句

使用Oracle的REGEXP_SUBSTR函数,通过指定分组提取来精准获取99/10和>之间的内容:

SELECT REGEXP_SUBSTR('013654127411422599412405412123AB>Z4204015479', '(99|10)(.*?)>', 1, 1, '', 2) AS result FROM DUAL;

语句说明

  1. (99|10):匹配起始分隔符99或10,作为第1个分组
  2. (.*?):匹配两个分隔符之间的任意内容(非贪婪模式,避免匹配到多个>),作为第2个分组
  3. >:匹配结束分隔符
  4. 最后一个参数2:指定提取第2个分组的内容,也就是我们需要的目标字符串

执行上述语句后,会返回预期结果:412405412123AB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:04:51