使用正则表达式(又名Regex)提取子字符串

5f0d552i  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(135)

我有雪花POSIX BRE引擎,并希望从给定的文本提取下面的子字符串。POSIX不支持向后和向前。请帮助正则表达式。
示例1:2022 CKL04 TER-专业:CPT-刷新PRD|需要的NPR子字符串:CPT-刷新PRD
示例2:2022 CA4A TER-PRO:所需的CPT-刷新PRD子字符串:CPT-刷新PRD
示例3:2022 CDDR4A TER-PRO:CPT-租赁PRD|微电脑|所需的LQPRI13子字符串:CPT-租赁PRD
示例4:2022 CAP04A TER-PRO:产品|需要的NPR子字符串:产品
示例5:2022 CS040 TER-PRO:MS-PRD和SVC年度|需要的NPR子字符串:MS-PRD和SVC年度
我需要后面的所有字符:在第一次之前|如果没有,则返回字符串末尾|可用。
我可以使用这个正则表达式(?〈=:).+?(?=||$),但我需要POSIX BRE的解决方案,不需要前瞻和前瞻

dpiehjr4

dpiehjr41#

逻辑是从:开始,然后继续捕获此后的所有内容,除非遇到|,此时我们就到此为止。我使用的是捕获组,因此不包括前面的:

select regexp_substr(col,':([^|]+)',1,1,'e');

相关问题