我有以下数据,我如何找到第11次':' 。我希望在第11次出现之后打印/显示信息:'。
我尝试了[^]标签,但它无效。
select regexp_substr(id,'[:]{5}?.*') from tempnew;
答案 0 :(得分:1)
regexp_substr
不关心捕获组,因此无法计算未包含在匹配中的字符。从最后算起来会有效:
-- Returns the substring after the 6th ':' from the end.
select regexp_substr(id, '([^:]*:){5}[^:]*$') from tempnew
-- If the string does not contain 5 ':', an empty string is returned.
如果您需要从头开始计算,可以使用regexp_replace
代替:
-- Returns the substring after the 11th ':'
select regexp_replace(id, '^([^:]*:){11}') from tempnew
-- If the string does not contain 11 ':', the whole string is returned.
答案 1 :(得分:0)
答案 2 :(得分:0)
我会分开“:”并使用第11个元素。
但是如果你必须使用正则表达式:
^(?:[^:]*:){10}:([^:]*)
并使用比赛的第1组。
答案 3 :(得分:0)
你可以使用split_part来达到这个目的, 从tempnew中选择split_part(id,':',12)