Der *
Operator ist standardmäßig 'gierig'
. Sie erlauben alle Zeichen zwischen distinct
und )
, in beliebiger Menge. und einschließlich des ersten )
selbst.
Wie EatÅPeach vorgeschlagen hat, können Sie es mit ?
nicht gierig machen :
Also hier, mit .*?
statt .*
:
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Oder Sie können angeben, dass es sich um ein beliebiges Zeichen außer )
handeln soll mit [^)]*
statt .*
.
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;