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

使用REGEXP_SUBSTR如何提取指定模式后由数字和点组成的版本号

你之前写的正则之所以匹配到了1.2.3.4,是因为没有锚定指定的前缀,正则会直接返回整段文本里第一个符合\d+[^a-z"]+规则的内容,刚好就是abcVersion对应的值。

要精准匹配xyzVersion" : "后的版本号,可以用两种方案,适配不同数据库的正则支持情况:

方案1:后行断言(适合支持后行断言的数据库,如MySQL8.0+、PostgreSQL、Oracle11g+)

直接通过后行断言锚定前缀,匹配结果不会包含前缀内容:

REGEXP_SUBSTR(`column`, '(?<=xyzVersion" : ")[0-9.]+') AS result
  • (?<=xyzVersion" : ") 是后行断言规则,只会匹配前面恰好是指定前缀的位置
  • [0-9.]+ 仅匹配连续的数字和点,完全符合目标版本号的格式要求

方案2:分组替换(兼容性更好,适配所有支持正则替换的数据库)

如果你的数据库不支持后行断言,可以先捕获目标内容,再替换掉其他无关部分:

REGEXP_REPLACE(`column`, '.*xyzVersion" : "([0-9.]+).*', '$1') AS result

逻辑是通过分组([0-9.]+)捕获你要的版本号,再把整段文本替换为分组1的内容,只会返回前缀后的目标版本号,不会匹配到其他版本字段的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:39:00