Skip to content

ABAP-Klasse zur objektorientierten Kapselung von Regulären Ausdrücken.

License

Notifications You must be signed in to change notification settings

jpnqs/ZCL_REGEX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Klasse ZCL_REGEX

ABAP-Klasse zur objektorientierten Kapselung von Regulären Ausdrücken.

Aufbau eines Regulären Ausdruckes

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).

ZCL_REGEX=>MATCH

Methode zur Überprüfung, ob ein Regex in einem String gefunden wurde oder nicht.

Signatur

zcl_regex=>match( iv_val:string, iv_regex:string ) : rv_contains:boolean

Beispiel

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.

ZCL_REGEX=>MATCHES

Methode, welche die Ergebnisse der Suche als Tabelle zurück gibt.

Signatur

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.

Beispiel

DATA(lt_matches) = zcl_regex=>matches( iv_val   = 'Hallo Welt!'
                                       iv_regex = '/Welt/gi' ).

ZCL_REGEX=>MATCHES_AS_STRING

Methode welche die gefunden Strings als Tabelle zurückgibt.

Signatur

zcl_regex=>matches_as_string( iv_val:string, iv_regex:string ) : rt_strings:stringtab

Beispiel

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"]

ZCL_REGEX=>SPLIT

Methode, welche einen String an einem Regex splittet.

Signatur

zcl_regex=>split( iv_val:string, iv_regex:string ) : rt_split:stringtab

Beispiel

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.

ZCL_REGEX=>REPLACE

Methode, welche einen Regex durch einen anderen angegeben String ersetzen.

Signatur

zcl_regex=>replace( iv_val:string, iv_regex:string, iv_replace:string ) : rv_val:string

Beispiel

DATA(lv_result) = zcl_regex=>replace( iv_val     = 'ABAP'
                                      iv_regex   = '/a/ig'
                                      iv_replace = ':)' ).

Ergebnis

:)B:)P

About

ABAP-Klasse zur objektorientierten Kapselung von Regulären Ausdrücken.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages