Skip to Main Content

 

Auswahl  

Reguläre Ausdrücke in Oracle (Praxisbeispiele) 

Oracle
SQL
RDBMS 12.x
09.09.23 (MP)
29.02.24(MP)

Passende Schulungen zum Thema

Im heutigen Tipp widmen wir uns ein paar Praxisbeispielen zu Regulär Expression (Reguläre Ausdrücke) in Oracle.

Beispiel 1: Kreditkartennummern haben meist das Format 1234-1234-1234-1234
Wir suchen in einem String zwei 4er Blöcke mit Zahlen un einem Minus dazwischen und ersetzen jeden Block durch xxxx-xxxx:

  • [[:digit:]] steht nur für Zahlen
  • [4} 4 Zahlen
select regexp_replace(
'1234-5678-1111-2222',
'[[:digit:]]{4}-[[:digit:]]{4}','xxxx-xxxx') from dual;

Ergebnis: xxxx-xxxx-xxxx-xxxx

Oder wir suchen vier 4er Blöcke mit Zahlen und ersetzen das mit XXXX:

select regexp_replace(
'1234-5678-1111-2222',
'[[:digit:]]{4}','xxxx') 
from dual;

Ergebnis: xxxx-xxxx-xxxx-xxxx

Nur der letzte 4er Block soll ausgegeben werden

select regexp_replace(
'1234-5678-1111-2222',
'([[:digit:]]{4})(-)([[:digit:]]{4})(-)([[:digit:]]{4})(-)([[:digit:]]{4})','XXXX-XXXX-XXXX-\7') from dual;

Ergebnis:

XXXX-XXXX-XXXX-2222

 

Alternativ können sie anstatt [[:digit:]] durch \d ersetzen

select regexp_replace(
'1234-5678-1111-2222',
'\d{4}','x') 
from dual;

Ergebnis: x-x-x-x

Beispiel 2: Wir löschen einige HTML Tags in einem String:

  • \/?div findet div, 
  • \/?p findet p und 
  • \/?strong findet strong Tags 
  • (da / ein Sonderzeichen ist, muss es mit \ entwertet (escaped) werden)
select regexp_replace(
'<div>Hallo</div><strong> Kurs</strong>',
'(<\/?div>|<\/?p>|<\/?strong>)','') 
from dual;

oder wir löschen alle HTML Tags im String

select regexp_replace(
'<div>Hallo</div><strong> Kurs</strong>',
'<\/?[^>]*>,'') 
from dual;

Das war eine kleine Beispielauswahl, die von uns ständig erweitert wird. Oder Sie kommen z.B. in den PL/SQL oder PL/SQL II Kurs, da werden diese Themen auch ausführlich besprochen.