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

寻求精准REGEXP_SUBSTR正则表达式:提取小数点前5位数字

解决方法:提取小数点前最后5位数字

你要的结果99999可以通过调整正则表达式来实现,核心是精准定位到小数点前的最后5位数字,而不是从开头的118开始匹配。试试这个SQL语句:

SELECT regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '\d{5}(?=\.)') FROM DUAL;

为什么之前的正则不对?

你之前用的[118]\d+或[118]\d{5}存在逻辑错误:

  • [118]是字符类,它的作用是匹配单个字符:要么是1,要么是8,而不是匹配连续的118字符串。所以正则会从字符串里第一个1开始匹配,后面跟着任意数字,自然得不到你要的最后5位。

正确正则的含义

\d{5}(?=\.)的拆解:

  • \d{5}:匹配连续的5位数字
  • (?=\.):这是正向零宽断言,用来确保这5位数字的后面紧跟着小数点(.),不会匹配其他位置的5位数字。

这样就能精准捕获到小数点前的最后5位数字99999,而且不需要添加额外的匹配参数,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:30