select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%[email protected] 11dde11h
[:alnum:]
is een afkorting voor alle letters (standaard ASCII-letters, kleine letters en hoofdletters) en alle cijfers. [^ ... ]
betekent alles BEHALVE ...
. Dit vervangt dus alles BEHALVE letters en cijfers door... niets (aangezien we geen derde argument aan REGEXP_REPLACE hebben gegeven).
BEWERKEN :De OP heeft een tweede deel aan de vraag toegevoegd.
Als de opdracht is om ALLEEN alle alfanumerieke tekens te verwijderen en al het andere te behouden, verwijder dan gewoon de ^
van de reguliere expressie.
select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%[email protected] $%[email protected]