Reguláris kifejezések kezelése (Oracle DB 10.1-től) ’*’ nulla vagy több előfordulás, ’+’ 1 vagy több előfordulás, ’?’ 0 vagy 1 előfordulás ’^’ sor kezdete, ’$’ sor vége, ’.’ tetszőleges karakter, ’[]’ bármelyik karakter a zárójelben, ’[: :]’ karakterosztályok pl. [:alpha:], [:digit:], [:alnum:], [:blank:], [:punct:] … stb. ’()’ csoportosító kifejezés, ’|’ vagylagos operátor {m,} {m} {m, n} illeszkedések száma legalább m, pontosan m, m és n közötti ’\n’ visszahivatkozó kifejezés az n-edik zárójelezett kifejezésre REGEXP_SUBSTR(forrás, minta, pozíció, előfordulás, illeszkedési param) Visszaadja a keresett mintát (vagy NULL-t) a forrás megadott részében (poz) keresve. Az illeszkedési paraméter jelezheti pl. hogy case sensitive módon keresünk-e vagy nem (’c’, ’i’). -- Az 'a' betű és a két utána következ? karakter SELECT regexp_substr('123:_*+abc:_*+123:-*+ABC', '[a]..') FROM dual; -- abc -- Az 'a' betű és a két utána következ? karakter második el?fordulása SELECT regexp_substr('123:_*+abc:_*+123:-*+ABC', '[a]..', 1, 2) FROM dual; -- NULL -- Az 'a' betű és a két utána következ? karakter a forrás 9. karakterétől kezdődő részben SELECT regexp_substr('123:_*+abc:_*+123:-*+ABC', '[a]..', 9) FROM dual; -- NULL -- Az 'a' betű és a két utána következ? karakter második el?fordulása, nem case sensivite esetben SELECT regexp_substr('123:_*+abc:_*+123:-*+ABC', '[a]..', 1, 2, ’i’) FROM dual; -- ABC -- A két ’_’ közötti rész SELECT regexp_substr('123:_*+abc:_*+123:-*+ABC', '_[^_]*_') FROM dual; -- _*+abc:_ -- 3 számjegy egymás után SELECT regexp_substr('123:_*+123:-*+ABC', '([[:digit:]]{3})') FROM dual; -- 123 -- 1 vagy 2 SELECT regexp_substr('123:_*+123:-*+ABC', '(1|2)') FROM dual; -- 1 REGEXP_INSTR(forrás, minta, poz, előf, visszatérési opc, illeszkedési param) Visszaadja a megtalált minta első karakterének pozícióját (opc=0), vagy a minta utáni pozíciót (opc=1). Ha nem talál, 0-t ad vissza. -- A két ’_’ közötti rész előfordulásának pozíciója SELECT regexp_instr('123:_*+abc:_*+123:-*+ABC', '_[^_]*_') FROM dual; -- 5 -- A minta utáni pozíció SELECT regexp_instr('123:_*+abc:_*+123:-*+ABC', '_[^_]*_', 1, 1, 1) FROM dual; -- 13 -- A '*' 0-szori el?fordulást is megenged, az alábbi minta illeszkedik SELECT regexp_instr('1223:_*+abc:_*+1223:-*+ABC', '(22)*') FROM dual; -- 1 -- A '+' csak >=1-szeri előfordulást enged SELECT regexp_instr('1223:_*+abc:_*+1223:-*+ABC', '(22)+') FROM dual -- 2 REGEXP_LIKE(forrás, minta, poz, előf, visszatérési opc, illeszkedési param) Igaz vagy hamis értékkel tér vissza attól függően, hogy talált-e mintát. -- Az ’A’ betű után már nincs 3 karakter SELECT 'X' from dual WHERE regexp_like('123:_*+abc:_*+123:-*+ABC', '[A]...') -- No rows selected REGEXP_REPLACE(forrás, minta, csere, poz, előf, illeszkedési param) Ha az illeszkedési param = 0 akkor a minta összes előfordulása le lesz cserélve a csere stringre, ha n>0, akkor csak az n-edik. -- Formázzunk meg egy mobil telefonszámot SELECT regexp_replace('30-3456789', '([[:digit:]]{2})-([[:digit:]]{3})', '(\1) \2-') FROM dual -- (30) 345-6789