SAP ABAP REGEX

From SapWiki

Ejemplos REGEX

Ejemplo de Uso de regex en ABAP

DATA: lt_match_result TYPE match_result_tab.
data: l_regex type string,
      l_string type string.
data: l_matches TYPE i.

l_regex = '^[^<>()\[\]\\,;:\s@"`]+@([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}$'.
l_string = 'pablo.tapia@sapwiki.cl'.

FIND ALL OCCURRENCES OF REGEX l_regex IN l_string
          IN CHARACTER MODE RESPECTING CASE
          MATCH COUNT l_matches RESULTS lt_match_result.
if l_matches le 0.
  message i000(0k) with 'E-mail no valido' display like 'E'.
  return.
endif.

validar rut (muy simple)

FIND REGEX '[0-9]{1,8}-([0-9]|K)' IN l_strng.

valida e-mail

^[^<>()\[\]\\,;:\s@"`]+@([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}$

validar Números

validar número
1.1111 correcto
-1.1111 correcto
1.11111- correcto
1111 correcto

^[-?0-9]+([.])?([0-9]+)?-?$

números de 2 enteros y 7 decimales
1.1234567 correcto
11.1234560 correcto

^[0-9]{1,2}\.([0-9]{7})+$

con signo izquierda
-1.1234567 correcto
1.1234567 correcto

^-?[0-9]{1,2}\.([0-9]{7})+$

con signo derecha o izquierda
^-?[0-9]{1,2}\.([0-9]{7})+-?$

validar número entero
^[0-9]+$

numero NNN.NN
valido
111.1
11.11
1

^\d{1,3}(\.\d{1,2})?$

numero entero con máximo de 13 caracteres
valido
1234567890111
111
1

^\d{1,13}$

Elimina prefijo

* NC00000009 -> 00000009
*saca prefijos de XBLNR
data l_xblnr type string.
 
l_xblnr = vbrk-xblnr.
 
REPLACE all OCCURRENCES OF REGEX '[[:alpha:]]' IN l_xblnr with ''.
if sy-subrc = 0.
....
endif.
ejemplo 2
REPLACE all OCCURRENCES OF REGEX '[^\d]' in l_xblnr WITH ''.

convertir fecha (yyyymmdd->dd/mm/yyyy)

data l_fecha(10).
l_fecha = sy-datum.
replace FIRST OCCURRENCE OF REGEX '(\d{4})(\d{2})(\d{2})'
                         in l_fecha WITH '$3/$2/$1'.
write:/ l_fecha.

usar REGEX como IF

ejemplo para verificar por clase de entrega

 data l_lfart type string.
 
 l_lfart = likp-lfart.
 find REGEX 'Y101|Y100|Y102' in l_lfart.
 if sy-subrc = 0.
   write:/ 'continue'.
 else.
   write:/ 'Exit'.
 endif.

DEMOS

RS_SIC_REGEX_CHECK
DEMO_REGEX_TOY

Regular Expression Patterns

 Escape character
 Special character Meaning
 \ Escape character for special characters
 Special Characters for single character string
 Special character Meaning
 . Placeholder for any single character
 \C Placeholder for any single character
 \d Placeholder for any single digit
 \D Placeholder for any character other than a digit
 \l Placeholder for any lower-case letter
 \L Placeholder for any character other than a lower-case letter
 \s Placeholder for a blank character
 \S Placeholder for any character other than a blank character
 \u Placeholder for any upper-case letter
 \U Placeholder for any character other than an upper-case letter
 \w Placeholder for any alphanumeric character including _
 \W Placeholder for any non-alphanumeric character except for _
 [ ] Definition of a value set for single characters
 [^ ] Negation of a value set for single characters
 [ - ] Definition of a range in a value set for single characters
 [ [:alnum:] ] Description of all alphanumeric characters in a value set
 [ [:alpha:] ] Description of all letters in a value set
 [ [:blank:] ] Description for blank characters and horizontal tabulators in a value set
 [ [:cntrl:] ] Description of all control characters in a value set
 [ [:digit:] ] Description of all digits in a value set
 [ [:graph:] ] Description of all graphic special characters in a value set
 [ [:lower:] ] Description of all lower-case letters in a value set
 [ [:print:] ] Description of all displayable characters in a value set
 [ [:punct:] ] Description of all punctuation characters in a value set
 [ [:space:] ] Description of all blank characters, tabulators, and carriage feeds in a value set
 [ [:unicode:] ] Description of all Unicode characters in a value set with a code larger than 255
 [ [:upper:] ] Description of all upper-case letters in a value set
 [ [:word:] ] Description of all alphanumeric characters in a value set, including _
 [ [:xdigit:] ] Description of all hexadecimal digits in a value set
 \a \f \n \r \t \v Diverse platform-specific control characters
 [..] Reserved for later enhancements
 [==] Reserved for later enhancements
 Special Characters for character string patterns
 Special character Meaning
 {n} Concatenation of n single characters
 {n,m} Concatenation of at least n and a maximum of m single characters
 {n,m}? Reserved for later enhancements
 ? One or no single characters
 * Concatenation of any number of single characters including 'no characters'
 *? Reserved for later enhancements
 + Concatenation of any number of single characters excluding 'no characters'
 +? Reserved for later enhancements
 | Linking of two alternative expressions
 ( ) Definition of subgroups with registration
 (?: ) Definition of subgroups without registration
 \1, \2, \3 ... Placeholder for the register of subgroups
 \Q ... \E Definition of a string of literal characters
 (? ... ) Reserved for later enhancements
 Special Characters for search string
 Special character Meaning
 ^ Anchor character for the start of a line
 \A Anchor character for the start of a character string
 $ Anchor character for the end of a line
 \Z Anchor character for the end of a character string
 \< Start of a word
 \> End of a word
 \b Start or end of a word
 \B Space between characters within a word
 (?= ) Preview condition
 (?! ) Negated preview condition
 Special Characters for replacement texts
 Special character Meaning
 $0, $& Placeholder for the whole found location
 $1, $2, $3... Placeholder for the register of subgroups
 $` Placeholder for the text before the found location