ABAP 정규식(PCRE) 입문: 자주 쓰는 패턴과 FIND, REPLACE, 내장 함수
3줄 요약
ABAP에서 정규식은 PCRE 문법을 쓰고,
FIND/REPLACE의PCRE추가 구문, 내장 함수의pcre매개변수,CL_ABAP_REGEX/CL_ABAP_MATCHER클래스, ABAP SQL의*_regexpr함수에서 쓸 수 있어요.옛 POSIX 방식(
REGEX추가 구문)은 폐기 예정이고 PCRE가 성능도 낫다고 해요.단순한 패턴 검색은 정규식 대신
CP/NP비교 연산자나 단순한 함수가 낫다는 Clean ABAP의 조언과 이어져요.
어떤 상황에서 쓰나요
문자열에서 숫자를 찾거나 일정한 형식을 검사할 때 정규식이 유용해요. 이번 글에서는 ABAP에서 PCRE 정규식을 사용하는 위치와 자주 쓰는 패턴을 알아봐요. FIND·REPLACE 예제를 읽고, 단순한 비교로 충분한 경우도 구분해 볼게요.
정규식은 문자열에서 규칙에 맞는 부분을 찾고 필요한 묶음을 추출할 때 쓰입니다. 아래 그림의 색 테두리는 일치한 부분을 나타내며, 실제로 쓸 패턴과 예외 조건은 별도로 확인해야 합니다.
핵심 내용
어디서 쓰나
FIND/REPLACE문장의PCRE추가 구문내장 함수의
pcre매개변수:find,find_end,count,match,matches,replace,contains,substring_from,substring_after,substring_before,substring_toABAP SQL/CDS 함수:
like_regexpr,locate_regexpr,locate_regexpr_after,occurrences_regexpr,replace_regexpr,substring_regexpr시스템 클래스
CL_ABAP_REGEX,CL_ABAP_MATCHER문법: ABAP은 커널의 PCRE2 라이브러리로 PCRE를 지원하고 ABAP SQL은 HANA 데이터베이스의 PCRE1을 써요. XPath와 XSD 정규식은 내부에서 PCRE로 자동 변환돼요. POSIX는 폐기 예정이고 구문 경고는 프라그마
##regex_posix로 숨길 수 있어요.
자주 쓰는 패턴 (치트시트가 표로 정리한 일부)
문자 종류:
.(임의의 한 문자, 줄바꿈 제외),\d/\D(숫자/숫자 아님),\s/\S(공백 문자),\w/\W(글자, 숫자, 밑줄)반복과 선택:
x*(0회 이상),x+(1회 이상),x?(0 또는 1회),x{m,n},x|y, 비탐욕x*?,x+?(예:<.+?>는 HTML 태그 하나씩 잡아요)위치:
\A(시작),\Z(끝),\b(단어 경계),\K(지금까지 맞은 부분을 결과에서 제외)그룹:
(...), 이름 있는 그룹(?<name>...), 비캡처(?:...), 역참조\1, 바꿀 때$1,${name},$0(전체)그 밖에 이스케이프, 문자 집합과 범위, 룩어라운드, 대소문자 변환, 옵션과 제어 동사, 콜아웃, 조건부 패턴도 시트에 있어요.
" 캡처 그룹으로 순서 바꾸기
DATA(r1) = replace( val = `APAB` pcre = `(..)(..)` with = `$2$1` ). " ABAP
" 이름 있는 그룹으로 날짜 형식 바꾸기
DATA(r2) = replace( val = `20241128`
pcre = `(?<yr>\d{4})(?<mo>\d{2})(?<d>\d{2})`
with = `${d}.${mo}.${yr}` ). " 28.11.2024ABAP 문장 예
FIND ALL OCCURRENCES OF PCRE[A-Za-z]IN str MATCH COUNT DATA(n).— 일치 횟수FIND ALL OCCURRENCES OF PCRE\sIN str RESULTS DATA(res).— 위치와 길이 표FIND PCRE(.*)\son\s(.*)IN str SUBMATCHES DATA(a) DATA(b).— 캡처 그룹 내용을 변수로마지막 쉼표 뒤 내용을
\K와 룩어헤드로 찾고MATCH OFFSET/MATCH LENGTH로 추출하는 예가 있어요.IN TABLE로 문자형 줄 타입의 내부 테이블 안에서도 찾고 바꿀 수 있어요.replace함수에서occ = 0은 모든 일치를 바꿔요.
주의할 점
잘못된 정규식은
cx_sy_invalid_regex, 너무 복잡하면cx_sy_regex_too_complex예외가 날 수 있어요. 사용자 입력을 정규식에 쓰기 전에 검증하세요.치트시트는 자주 쓰는 일부만 다루고, 완전한 PCRE 문법은 Perl 문서(
perlre)를 안내해요. ABAP 에서는 표준과 다른 제약이 있을 수 있어요.단순한 검사는 정규식보다
CP,NP,contains,matches가 읽기 쉽고 가볍다는 점은 Clean ABAP 연재 4회와 "ABAP 7.40+ 최신 문법 치트시트" 연재 3회를 참고하세요.치트시트는 계속 갱신되는 문서예요. 이 편의 첫 공개는 2024년 11월이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/28_Regular_Expressions.md
출처와 이용 안내
원문: ABAP Cheat Sheets - Regular Expressions in ABAP · 작성자 SAP SE and contributors SAP-samples · 작성일 2024-11-29 · 기준 릴리스에 따라 다름 원문은 PCRE2 기준, ABAP SQL 은 HANA 의 PCRE1 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기