O
*
operador é 'ganancioso' por padrão
. Você está permitindo quaisquer caracteres entre distinct
e )
, em qualquer quantidade. e incluindo o primeiro )
em si. Como sugeriu EatÅPeach, você pode torná-lo não-ganancioso com
?
:Então aqui, com
.*?
em vez de .*
:select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Ou você pode especificar que deve ser qualquer caractere exceto
)
com [^)]*
em vez de .*
. select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;