Requirement:
Filter
strings of pattern LNN_NNNN_NN_LL (L – Letter, N – Number) from a list Eg: Z00_0002_01_AA,
Z01_0015_02_AA etc.
Solution:
Used SAP regular expressions (REGEX) concept to get this
done in a program. It makes string, integer and special character comparisons
much simpler.
'\<Z\d\d_\d\d\d\d_\d\d_\D\D\>' is the matching pattern
in terms of regular expressions for a string like ‘Z00_0002_01_AA’.
DATA: c_pattern TYPE string VALUE '\<Z\d\d_\d\d\d\d_\d\d_\D\D\>'.
DATA:lv_match TYPE abap_bool,
lr_matcher TYPE REF TO cl_abap_matcher.
lr_matcher TYPE REF TO cl_abap_matcher.
lr_matcher = cl_abap_matcher=>create(
pattern = c_pattern
ignore_case = 'X'
text = ‘Z00_0002_01_AA’ ).
ignore_case = 'X'
text = ‘Z00_0002_01_AA’ ).
lv_match = lr_matcher->match( ).
If lv_match = ‘X’
then it is a match.
Special characters used
|
Meaning
|
\d
|
Placeholder for any single
digit
|
\D
|
Placeholder for any character
other than a digit
|
\<
|
Start of a word
|
\>
|
End of a word
|
There
is a standard program available to check REGEX Functionality DEMO_REGEX_TOY. Below are few screens
from the same.
Finding the pattern:
No comments:
Post a Comment