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;