正则表达式难度

Isa*_*man 2 oracle regular-expression oracle-11g

我试图456从字符串中提取:123:456:如下:

select regexp_substr(':123:456:', ':(\d+):', 1, 2, 'i', 1) from dual
Run Code Online (Sandbox Code Playgroud)

但是,此查询返回null。我究竟做错了什么?

Phi*_*lᵀᴹ 6

这工作正常:

select regexp_substr(':123:456:', '(\d+):', 1, 2, 'i', 1) from dual;
Run Code Online (Sandbox Code Playgroud)

我认为你的失败是因为开始和结束冒号不会被两次匹配(因为第一个匹配是贪婪的)。