====== Regex ======
===== Caractères spéciaux =====
Les ancres de fin de ligne (''$'') fonctionnent en accord avec le [[http://ginkobox.fr/work/wiki/doku.php?id=abap:chars|fonctionnement des chaines de caractères dans SAP]] : en cas de chaine de longueur fixe, un pattern ne matchera que si on prend en compte les trailing blanks (par exemple en terminant le pattern par ' *$' plutôt que seulement '$'):
DATA f(6).
f = 'T01'.
IF find( val = f = '^T\d{2} *$' ) >= 0.
" Your process
ENDIF.
===== Fonction prédéfinie =====
La fonction ''find'' renvoie la position du match en ''integer'' :
* -1 si pas de match
* 0 si début de la chaine
* 1, n sinon
===== cl_abap_matcher =====
**IMPORTANT** : Pour utiliser le matcher, il faut que la regex couvre tout le texte (genre commencer et finir par ''.*'' si les subgroups intéressants ne couvrent pas tout le texte) !
[[https://codezentrale.de/tag/cl_abap_matcher/|Sauce]]
DATA(matcher) = cl_abap_matcher=>create( pattern = '^/category/([0-9]{1,5})/item/([0-9]{1,2})$'
text = '/category/12345/item/12'
ignore_case = abap_true ).
IF abap_true = matcher->match( ).
* erstes Match
WRITE: / matcher->get_submatch( 1 ).
* zweites Match
WRITE: / matcher->get_submatch( 2 ).
ENDIF.