* operátor je ve výchozím nastavení 'chamtivý'
. Povolujete jakékoli znaky mezi distinct a ) , v libovolném množství. a včetně prvního ) sám.
Jak navrhl EatÅPeach, můžete to udělat tak, že nebudou chamtivé pomocí ? :
Takže zde s .*? místo .* :
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Nebo můžete zadat, že by to měl být jakýkoli znak kromě ) s [^)]* místo .* .
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;