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

如何不使用'.*?(\d+)', '\1'从JSON列提取键名末尾数字

提取JSON键末尾数字的替代正则方案

针对你需要替换原语句中'.*?(\d+)', '\1'部分的需求,这里提供几个等价的实现方式,都能提取JSON键名末尾的数字并转为ID列:

方案1:移除开头所有非数字字符

直接匹配键名开头的所有非数字内容并替换为空,留下的就是末尾的数字:

REGEXP_REPLACE((json_each_text(fixtures::json)).key, '^\D+', '')::int as ID

原理:^\D+匹配字符串开头的一个或多个非数字字符,替换为空后自然保留末尾的数字序列。

方案2:贪婪匹配捕获末尾数字

将原正则的非贪婪匹配改为贪婪匹配,同样捕获末尾的数字组:

REGEXP_REPLACE((json_each_text(fixtures::json)).key, '.*(\d+)', '\1')::int as ID

原理:.*会贪婪匹配到最后一个数字前的所有内容,(\d+)捕获末尾的连续数字,替换时保留捕获组内容。

方案3:直接提取末尾数字(更直观)

用REGEXP_SUBSTR直接提取末尾的数字序列,无需替换操作:

REGEXP_SUBSTR((json_each_text(fixtures::json)).key, '\d+$')::int as ID

原理:\d+$匹配字符串末尾的一个或多个连续数字,直接提取该部分作为结果。

以上三种方案都能实现和原语句相同的效果,可根据你的习惯选择使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:05:16