* operatoren er som standard 'greedy'
. Du tillader alle tegn mellem distinct og ) , i enhver mængde. og inklusive den første ) sig selv.
Som EatÅPeach foreslog, kan du gøre det ikke-grådigt med ? :
Så her, med .*? i stedet for .* :
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Eller du kan angive, at det skal være et hvilket som helst tegn undtagen ) med [^)]* i stedet for .* .
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;