*
operator jest domyślnie „chciwy”
. Zezwalasz na dowolne znaki między distinct
i )
, w dowolnej ilości. i w tym pierwszy )
się.
Jak zasugerował EatÅPeach, możesz sprawić, że nie będzie zachłanny za pomocą ?
:
Więc tutaj, z .*?
zamiast .*
:
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Lub możesz określić, że powinien to być dowolny znak z wyjątkiem )
z [^)]*
zamiast .*
.
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;