Regular Expressions (Regex) and its use in ABAP

A useful post that I found online [link] originally written by Christian Jianelli.
For testing Regex without coding you can use the ABAP program DEMO_REGEX_TOY.

Even in ABAP Regular Expressions (Regex) is not a new issue. ABAP supports regular expressions as of Release 7.00, released to customers on Oct 24, 2005. Although not so new its use is rarely found in ABAP. One of reasons is that SAP has already provided other ways to search for patterns e.g. SEARCH txt FOR pattern and IF txt CP pattern.
But what is Regex after all?


“In computing, a regular expression, also referred to as regex or regexp, provides a concise and flexible means for matching strings of text, such as particular characters, words, or patterns of characters. A regular expression is written in a formal language that can be interpreted by a regular expression processor, a program that either serves as a parser generator or examines text and identifies parts that match the provided specification.”
There is a very good tutorial about Regex at We will skip the basics of Regex and go directly to its use in ABAP.

Using Regex in ABAP

Regex is more powerful than traditional SAP patterns and is commonly used for searching and validating text. ABAP supports Regex in the statements FIND and REPLACE and via the the classes CL_ABAP_REGEX and CL_ABAP_MATCHER.  There is an excellent article at SDN produced by Shaira Madhu with many more details of Regex in ABAP.

Let’s see some examples.

Example 1 – Tests if text starts with Hello (case sensitive)

DATA text TYPE string.
DATA moff TYPE i.
DATA mlen TYPE i.

text = `Hello World example`.

IF sy-subrc = 0.
  WRITE / text+moff(mlen).

Example 2 – Removes example from the text only if it is the last word

DATA text TYPE string.

text = `Hello World example`.
REPLACE REGEX 'example$' IN text WITH ''.

IF sy-subrc = 0.
  WRITE / text.

Example 3 – Validates e-mail using the class CL_ABAP_MATCHER

DATA email   TYPE string VALUE `webmaster@sapignite`. "missing .com"
DATA matcher TYPE REF TO cl_abap_matcher.

matcher = cl_abap_matcher=>create(
pattern = `\w+(\.\w+)*@(\w+\.)+(\w{2,4})`
text    = email ).

IF matcher->match( ) IS INITIAL.
  MESSAGE 'Invalid e-mail' TYPE 'I' DISPLAY LIKE 'E'.

Leave a Reply


captcha *