*
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;