User Tools

Site Tools


abap:regex

Regex

Caractères spéciaux

Les ancres de fin de ligne ($) fonctionnent en accord avec le 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) !

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.
abap/regex.txt · Last modified: 2021/07/23 18:23 by ginko