* operator 'serakah' secara default
. Anda mengizinkan karakter apa pun antara distinct dan ) , dalam jumlah berapa pun. dan termasuk ) first pertama sendiri.
Seperti yang disarankan oleh EatÅPeach, Anda dapat membuatnya tidak serakah dengan ? :
Jadi di sini, dengan .*? bukannya .* :
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Atau Anda dapat menentukan karakter apa saja kecuali ) dengan [^)]* bukannya .* .
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;