खोज…


की जगह

REPLACE कथन नियमित अभिव्यक्ति के साथ सीधे काम कर सकता है:

DATA(lv_test) = 'The quick brown fox'.
REPLACE ALL OCCURRENCES OF REGEX '\wo' IN lv_test WITH 'XX'.

चर lv_test The quick bXXwn XXx मूल्यांकन करेगा।

खोज कर

FIND स्टेटमेंट नियमित एक्सप्रेशन के साथ सीधे काम कर सकता है:

DATA(lv_test) = 'The quick brown fox'.

FIND REGEX '..ck' IN lv_test.
" sy-subrc == 0

FIND REGEX 'a[sdf]g' IN lv_test.
" sy-subrc == 4

ऑब्जेक्ट-ओरिएंटेड रेगुलर एक्सप्रेशंस

अधिक उन्नत रेगेक्स परिचालनों के लिए CL_ABAP_REGEX और उससे संबंधित कक्षाओं का उपयोग करना सबसे अच्छा है।

DATA: lv_test  TYPE string,
      lo_regex TYPE REF TO cl_abap_regex.

lv_test = 'The quick brown fox'.
CREATE OBJECT lo_regex
  EXPORTING
    pattern = 'q(...)\w'.

DATA(lo_matcher) = lo_regex->create_matcher( text = lv_test ).
WRITE: / lo_matcher->find_next( ).      " X
WRITE: / lo_matcher->get_submatch( 1 ). " uic
WRITE: / lo_matcher->get_offset( ).     " 4

एक नियमित कार्य के साथ नियमित भाव का मूल्यांकन

किसी भी वस्तु घोषणाओं के उपयोग के बिना मक्खी पर तार का मूल्यांकन करने के लिए विधेय फ़ंक्शन matches का उपयोग किया जा सकता है।

IF matches( val = 'Not a hex string'
            regex = '[0-9a-f]*' ).
  cl_demo_output=>display( 'This will not display' ).
ELSEIF matches( val = '6c6f7665'
                regex = '[0-9a-f]*' ).
  cl_demo_output=>display( 'This will display' ).
ENDIF.

OO- रेगुलर एक्सप्रेशंस का उपयोग करके सबमैच प्राप्त करना

विधि का उपयोग कर GET_SUBMATCH वर्ग के CL_ABAP_MATCHER , हम समूहों / उपसमूहों में डेटा प्राप्त कर सकते हैं।

लक्ष्य: कीवर्ड 'टाइप' के दाईं ओर एक टोकन प्राप्त करें।

DATA: lv_pattern TYPE string VALUE 'type\s+(\w+)',
      lv_test TYPE string VALUE 'data lwa type mara'.

CREATE OBJECT ref_regex
  EXPORTING
        pattern     = lv_pattern
        ignore_case = c_true.

ref_regex->create_matcher(
    EXPORTING
        text    = lv_test
    RECEIVING
        matcher = ref_matcher
       ).

ref_matcher->get_submatch(
            EXPORTING
                 index = 0
            RECEIVING
                 submatch = lv_smatch.

परिणामी चर lv_smatch में MARA मान होता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow