Регулярнее выражение в одно условие
select
REGEXP_SUBSTR(REGEXP_REPLACE('ch_google_adwords|trg|CID_12345|crt_314144262886|kwmt_e|ps_1t1|srct_g|trgt_|src_|devt_m|devm_|cid_1637432876|lcl_101186|fdi_|mrlid_11995|dop_',
'((CID|CR|MRLID|GEO).(\d+))|(\d{5,6}[a-zA-Z])|([a-zA-Z]\d{5,6})','',1,0,'i'),'(\D|^)(\d{5,6})(\D|$)', 1, 1, 'i', 2)
from dual
Возвращается нужное число : 101186
Как переписать регулярку с таким же итогом без replace используя только substr ? Отобрать надо 5 или 6 числовым символов, где слева первый символ от числовых символов не число и не буква, и справа первый символ от числовых символов не число и не буква. Так же, учитывать исключения CID|CR|MRLID|GEO