如何在Snowflake中编写正则表达式提取字符串内最后一个7位数字
正确实现代码
直接使用以下SQL即可提取字符串中最后一个7位数字:
SELECT REGEXP_SUBSTR('4000400 - Widget Revenue:4000401 - Special Widgets:4000422 - Tiny Special Widgets', '.*(\\d{7})', 1, 1, 'e', 1)
运行后返回结果为4000422,符合需求。
规则说明
- 正则表达式
.*(\d{7})利用贪婪匹配特性,.*会尽可能匹配最长的前缀内容,直到最后一组符合\d{7}(7位连续数字)规则的片段,将其存入捕获组1 - REGEXP_SUBSTR参数说明:
- 第3位
1:从字符串第1个字符开始匹配 - 第4位
1:返回第1次匹配的结果 - 第5位
'e':开启子匹配组提取模式 - 第6位
1:返回第1个捕获组的内容
- 第3位
原有代码错误原因
原正则\D*\d+\D+(\d+).*仅能匹配到第二组数字,无法定位到最后一组数字,同时没有限制数字长度为7位,也未指定返回捕获组的参数,运行后会返回整个匹配到的字符串而非目标数字片段。
内容的提问来源于stack exchange,提问作者influent
相关产品推荐
相关产品推荐

