ABAP-Klasse zur objektorientierten Kapselung von Regulären Ausdrücken.
DATA(lv_regex) = '/<Regex>/<Parameter>'.
Der Regex-String, welcher in jede Methode der Klasse ZCL_REGEX gegeben wird, ist wie ein Regex aus JavaScript aufgebaut. Dies heißt das der Regex zwischen die '/' geschrieben wird, und am Ende Paremeter noch mitgegeben werden können. Mithilfe der Methode CONVERT_ABAP_REGEX können ABAP Regex Anweisungen in für die Klasse interpretierbare Anweisungen Konvertiert werden.
- i : ignoring case (nicht Casesensitiv)
- g : global (Suche findet global statt)
ABAP verwendet im Kernel die C++ Engine Boost.Regex 5.1.1. Demnach ist mit ABAP Regex nur möglich, was diese Engine bereitstellt. Für weitere informationen über ABAP Regex klicken Sie hier.
Die Klasse benutzt keine Non-SAP-Standard Entwicklungen, und kann einfach per Copy & Paste auf die Zielmaschine kopiert werden (Erfolgreich getestet in SAP GUI Version 7.50).
Methode zur Überprüfung, ob ein Regex in einem String gefunden wurde oder nicht.
zcl_regex=>match( iv_val:string, iv_regex:string ) : rv_contains:boolean
IF abap_true = zcl_regex=>match( iv_val = 'ABAP'
iv_regex = '/a/i' ).
" Regex wurde gefunden
ELSE.
" Regex wurde nicht gefunden
ENDIF.
Dieser Aufruf gibt abap_true
zurück.
zcl_regex=>match( iv_val = 'ABAP'
iv_regex = '/a/' ).
Dieser Aufruf gibt abap_false
zurück, da dieser Aufruf Casesensitiv ist.
Der Global Modifier ist für diese Methode irrelevant, da hier nur geschaut wird, ob der Regex mindestens einmal gefunden wird.
Methode, welche die Ergebnisse der Suche als Tabelle zurück gibt.
zcl_regex=>matches( iv_val:string, iv_regex:string ) : rt_matches:match_result_tab
Mit dem Modifier g (Global) werden alle vorkommenden Stellen gematched und ausgegeben, wenn dieser Modifier nicht angegeben ist, dann wird nur das Erste zurückgegeben.
DATA(lt_matches) = zcl_regex=>matches( iv_val = 'Hallo Welt!'
iv_regex = '/Welt/gi' ).
Methode welche die gefunden Strings als Tabelle zurückgibt.
zcl_regex=>matches_as_string( iv_val:string, iv_regex:string ) : rt_strings:stringtab
DATA(lt_matches) = zcl_regex=>matches_as_string( iv_val = 'Hallo Welt!'
iv_regex = '/Welt/gi' ).
Mit dem Modifier g (Global) werden alle vorkommenden Stellen gematched und ausgegeben, wenn dieser Modifier nicht angegeben ist, dann wird nur das Erste zurückgegeben.
Ergebnis:
["Welt"]
Methode, welche einen String an einem Regex splittet.
zcl_regex=>split( iv_val:string, iv_regex:string ) : rt_split:stringtab
DATA(lt_split) = zcl_regex=>split( iv_val = 'Hallo/B/Welt!'
iv_regex = '/\/B\//gi' ).
Ergebnis:
["Hallo", "Welt!"]
Wenn als Modifier kein g (global) mitgegeben wird, dann wird der String nur am ersten auftreten des Regex gesplittet.
Methode, welche einen Regex durch einen anderen angegeben String ersetzen.
zcl_regex=>replace( iv_val:string, iv_regex:string, iv_replace:string ) : rv_val:string
DATA(lv_result) = zcl_regex=>replace( iv_val = 'ABAP'
iv_regex = '/a/ig'
iv_replace = ':)' ).
Ergebnis
:)B:)P