正则函数匹配特定词汇后数字遇非数字未停止问题求助
提取“FINAL CLAIM COUNT”后首个连续数字的正确方法
你的问题出在原语句会把截取范围内的所有数字都保留,不管它们是否是关键词后的第一串数字。比如测试文本里的2和后面的12345都会被保留,导致结果不符合预期。
正确实现逻辑
直接使用正则捕获定位关键词后的首个连续数字序列,无需先截取再替换。以Oracle SQL为例,使用REGEXP_SUBSTR函数即可实现需求:
REGEXP_SUBSTR(CASE_CMT, 'FINAL CLAIM COUNT[^0-9]*([0-9]+)', 1, 1, 'i', 1)
参数说明:
'FINAL CLAIM COUNT[^0-9]*([0-9]+)':正则表达式核心规则:- 匹配
FINAL CLAIM COUNT关键词 [^0-9]*:匹配关键词之后的任意非数字字符(比如冒号、空格等分隔符)([0-9]+):捕获紧随其后的第一串连续数字
- 匹配
1, 1:从字符串第1位开始,匹配第1次出现的目标'i':开启忽略大小写模式,兼容小写的final claim count- 最后一个
1:返回正则表达式中第一个捕获组的内容,也就是我们要的目标数字序列
用这个语句处理测试文本final claim count: 2 AAA 12345,会准确返回2,不会包含后续无关数字。
内容的提问来源于stack exchange,提问作者Tanner Tolbert
相关产品推荐
相关产品推荐

