El *
el operador es 'codicioso' por defecto
. Estás permitiendo cualquier carácter entre distinct
y )
, en cualquier cantidad. e incluyendo el primer )
mismo.
Como sugirió EatÅPeach, puede hacer que no sea codicioso con ?
:
Así que aquí, con .*?
en lugar de .*
:
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
O puede especificar que debe ser cualquier carácter excepto )
con [^)]*
en lugar de .*
.
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;