수색…


교체

REPLACE 문은 정규식을 직접 사용할 수 있습니다.

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

변수 lv_testThe 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_smatchMARA 값을 포함합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow