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, XPath, XSD, POSIX)라서 어떤 것을 써야 하는지 헷갈려요. 치트시트의 *Regular Expressions in ABAP* 편은 PCRE 중심으로 자주 쓰는 패턴과 ABAP 문장을 모아 줘요.
핵심 내용
어디서 쓰나
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 문법 따라잡기" 연재 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
아직 댓글이 없어요.
로그인하고 댓글 쓰기