我有一个列值中所有类型的页面事件列表,该列值由我使用listag方法得到的time asc排序。 listagg(page,';') within group (order by time)
我想得到与正则表达式匹配的最后一个匹配项的出现次数 regexp_substr(event_list,'/step[0-9]+[^;]*')
根据docs“一个正整数,表示源字符串中开始搜索的位置。位置基于字符数,而不是字节数,因此多字节字符被计为单个字符。默认值为1。如果位置小于1,则从源字符串的第一个字符开始搜索。如果位置大于源字符串中的字符数,则结果为源字符串。“
基于此,我需要知道确切的发生次数,我不知道。在这种情况下如何获得最后一个匹配?如: /step1;somethging;somethig;/step2;something;/step3;something;
我想匹配第三步。
注:按时间描述排序并获得第一个匹配项在这里不是一个选项。
1条答案
按热度按时间gg58donl1#
使用
regexp_count
以确定有多少匹配项(n
)&然后使用regexp_substr
为了得到n
第四场比赛。输出:
如果
/
可以被视为分隔符,那么您也可以采用以下策略将字符串反转,按
/
&第一部分。再次反转,加前缀/
并应用正则表达式来提取步骤:例子:
输出: