목차

Oracle Regular Expression(정규표현식)

정규표현식이란?

정규표현식의 이해

REGEXP_LIKE

REGEXP_INSTR

REGEXP_SUBSTR

REGEXP_REPLACE

백레퍼런스(Backreference)

매치 매개변수 옵션

정규 표현식의 활용사례

연산기호

메타문자의 앵커(anchor)의 적용

Metacharacter 설명
^ 라인의 시작 부분에 표현식을 적용
$ 라인의 끝부분에 표현식을 적용

반복 연산자(Repetition Operator, Quantifier)

Quantifier 설명
* 0 회 또는 그 이상 횟수로 매치
? 0 회 또는 1 회 매치
+ 1 회 또는 그 이상 횟수로 매치
{m} 정확히 m 회 매치
{m,} 최소한 m 회 매치
{m, n} 최소 m 회, 최대 n 회 매치

사전정의된 POSIX 문자 클래스

Character Class 설명
[:alpha:] 알파벳 문자
[:lower:] 소문자 알파벳 문자
[:upper:] 대문자 알파벳 문자
[:digit:] 숫자
[:alnum:] 알파벳/숫자
[:space:] 출력되지 않는 공백 문자(예: carriage return, newline, vertical tab, form feed 등
[:punct:] 구두점 기호
[:cntrl:] (출력되지 않는) 컨트롤 문자
[:print:] 출력 가능한 문자

대체 매칭 및 표현식의 그룹화

Metacharacter 설명
| Alternation 대체 문자를 구분 (그룹핑 연산자 ()와 함께 사용하기도 함)
( ) Group 반복 연산자 또는 백레퍼런스(backreference)를 위해 대체 유닛을 서브표현식으로 그룹화 (“백레퍼런스” 섹션 참고)
[char] Character list I문자 리스트. 문자 리스트 내부에 위치하는 대부분의 메타문자는 일반 문자로 인식됨. 그 예외가 캐럿(^) 기호와 하이픈(-) 기호

REGEXP_LIKE 연산자

문법 설명
REGEXP_LIKE(source_string, pattern[, match_parameter]) source_string은 문자 데이터타입 지원 (CHAR, VARCHAR2, CLOB, NCHAR, NVARCHAR2, NCLOB 단 LONG 은 제외).
pattern매개변수는 정규 표현식을 참조하는 또 다른 이름.
옵션으로 제공되는 match_parameter를 이용하여 newline 문자의 처리, 멀티라인 포맷의 유지, 대소문자 구분 등을 처리할 수 있음.

REGEXP_INSTR 함수

문법 설명
REGEXP_INSTR(source_string, pattern
[, start_position
[, occurrence
[, return_option
[, match_parameter]]]])
pattern을 검색하여 패턴의 첫 번째 위치를 반환. 필요한 경우 start_position y을 이용하여 검색을 시작할 위치를 지정할 수 있음.
occurrence 매개변수는 같은 패턴을 여러 번 검색하고자 하는 경우에 사용(디폴트는 1).
return_option은 패턴의 시작 위치를 반환(디폴트 값은 0).
1로 설정되는 경우 매치된 패턴의 다음 문자 위치를 반환.

5 자리 숫자 + 4 자리 Zip-Code 표현식에 대한 설명

문법 설명
매치되어야 하는 빈 공백
[:digit:] POSIX “numeric digit” 클래스
] 문자 리스트(character list)의 끝
{5} 문자 리스트에 대해 정확히 5 회 반복
( 서브표현식(subexpression)의 시작 부분
- 하이픈(-) 문자 (문자 리스트 내의 range 메타문자로 사용되지 않았음에 주의)
[ 문자 리스트의 시작 부분
[:digit:] POSIX [:digit:] 클래스
[ 문자 리스트의 시작 부분
] 문자 리스트의 끝 부분
{4} 문자 리스트를 정확히 4 회 반복
) 서브표현식을 묶는 괄호 기호
? ? 반복 연산자는 그룹핑된 서브표현식을 0 회 또는 1 회 매치하여 옵션으로 4 자리 코드를 사용할 수 있게 함
$ 검색 위치를 라인의 끝부분으로 지정하기 위한 앵커 메타문자

The REGEXP_SUBSTR 함수

문법 설명
REGEXP_SUBSTR(source_string, pattern
[, position
[, occurrence
[, match_parameter]]])
REGEXP_SUBSTR 함수는 패턴애 매치되는 서브문자열을 반환.

The REGEXP_REPLACE 함수

문법 설명
REGEXP_REPLACE(source_string, pattern
[, replace_string [, position
[,occurrence, [match_parameter]]]])
매치된 패턴을 지정된 replace_string으로 대체하고, 복잡한 검색/대체 작업을 가능하게 하는 함수.

백레퍼런스 메타문자 (Backreference Metacharacter)

Metacharacter 설명
\digit Backslash 백슬래시 뒤에 1-9 사이의 숫자를 명시하여, 괄호 처리된 N 번째 서브표현식을 참조하기 위해 사용.
(참고: 백슬래시는 정규 표현식에서 다른 의미로 사용되기도 함. 문맥에 따라 Escape 문자를 의미할 수도 있음.

패턴-스왑(Pattern-Swap) 정규 표현식의 설명

정규 표현식 아이템 설명
( 첫 번째 서브표현식의 시작
. (newline을 제외한) 임의의 단일 문자와 매치
* 반복 연산자 - 앞의 . 메타문자와 0 회에서 n 회까지 매치
) 첫 번째 서브표현식의 마지막. 매치 결과는 \1 에 캡처됨(예제에서는 Ellen을 캡처)
공백 기호
( 두 번째 서브표현식의 시작
. newline을 제외한 임의의 단일 문자와 매치
* 반복 연산자 - 앞의 . 메타문자와 0 회에서 n 회까지 매치
) 두 번째 서브표현식의 마지막; 매치 결과는 \2 에 캡처됨(예제에서는 Hildi를 저장).
공백 기호
( 세 번째 서브표현식의 시작
. newline을 제외한 임의의 단일 문자와 매치
* 반복 연산자 - 앞의 . 메타문자와 0 회에서 n 회까지 매치
) 세 번째 서브표현식의 끝 부분. 매치 결과는 \3 에 캡처(예제에서는 Smith를 저장).

Social Security Number 정규 표현식의 설명

정규 표현식 아이템 설명
^ 라인 문자의 시작(정규 표현식은 매치되기 이전의 문자를 가져 올 수 없음.)
( 서브표현식을 시작하고 | 메타문자를 이용하여 대체 목록을 제공
[ 문자 리스트(character list)의 시작
[:digit:] POSIX “numeric digit” 클래스
] 문자 리스트의 끝 부분
{3} 문자 리스트를 정확하게 3 회 반복 적용
- 하이픈
[ 문자 리스트의 시작
[:digit:] POSIX numeric digit 클래스
] 문자 리스트의 끝 부분
{2} 문자 리스트를 정확하게 2 회 반복 적용
- 또 다른 하이픈 기호
[ 문자 리스트의 시작
[:digit:] POSIX numeric digit 클래스
] 문자 리스트의 끝 부분
{4} 문자 리스트를 정확하게 4 회 반복 적용
| 대체(alternation) 메타문자 - 첫 번째 선택을 종료하고 두 번째 대체 표현식을 시작
[ 문자 리스트의 시작
[:digit:] POSIX numeric digit 클래스.
] 문자 리스트의 끝 부분
{9} 문자 리스트를 정확하게 9 회 반복
) 대체를 위해 사용된 서브표현식 그룹을 종료하는 괄호 기호
$ 라인의 끝부분을 의미하는 앵커 메타문자 (매치된 패턴 이후에 어떤 문자도 뒤따라 올 수 없음)