* toán tử 'tham lam' theo mặc định
. Bạn đang cho phép bất kỳ ký tự nào giữa distinct và ) , với số lượng bất kỳ. và bao gồm ) đầu tiên chính nó.
Như EatÅPeach đã đề xuất, bạn có thể làm cho nó không tham lam bằng ? :
Vì vậy, ở đây, với .*? thay vì .* :
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Hoặc bạn có thể chỉ định nó phải là bất kỳ ký tự nào ngoại trừ ) với [^)]* thay vì .* .
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;