[과목2.SQL 기본 및 활용 - 3-14. 정규 표현식]
1. 정규 표현식?
(1) 문자열의 규칙을 표현하는 검색 패턴
(2) 주로 문자열 검색과 치환에 사용
2. POSIX 연산자
- 기본연산자
(1) ‘ . ‘ (dot) : 모든 문자와 일치
(2) ‘ | ‘ (or) : 대체 문자를 구분
– 먼저 들어온 문자를 리턴(ex. REGEXP_SUBSTR(‘aa’, ‘a|aa’) => ‘a’리턴)
- 검색 패턴의 시작과 끝 지정
(3) ‘ \ ‘ (backslash) : 백슬래시 다음 문자를 일반 문자로 취급
(4) ‘ ^ ’ (carrot) : 문자열의 시작
(5) ‘ $ ‘ (dollar) : 문자열의 끝
- 수량사 - 선행 표현식의 일치 횟수를 지정
- Greedy 방식 : 패턴을 최대로 일치 시킴
(6) ‘ ? ‘ : 0회 또는 1회 일치
(7) ‘ * ‘ : 0회 또는 그 이상의 횟수로 일치
(8) ‘ + ‘ : 1회 또는 그 이상의 횟수로 일치
(9) {m} : m회 일치
(10) {m,} : 최소 m회 일치
(11) {, m} : 최대 m회 일치
(12) {m,n} : 최소 m회 일치, 최대 n회 일치
(13) ( ) 괄호 : 괄호 안의 표현식을 하나의 단위로 취급
(14) \n 역참조 : N번째 서브 표현식과 일치, n은 1~9사이 정수
- (ab|cd)x\1 일경우 ‘abxab’, ‘cdxcd’가능..
- (.*)\1+ 일 경우 동일한 문자열이 1회이상 반복되는 패턴은 모두 해당됨
- 문자리스트
(15) [char…] : 문자 리스트 중 한문자와 일치
(16) [^char…] : 문자 리스트에 포함되지 않은 한 문자와 일치
(17) […-…] (하이픈) : 문자 혹은 숫자의 범위를 의미
- [0-9] : 0~9까지의 숫자 의미
- [a-z] , [A-Z] , [a-zA-z]
(18) [:digit:] : 숫자만 찾음
(19) [:lower:] : 소문자만 찾음
(20) [:upper:] : 대문자만 찾음
(21) [:alpha:] : 영문자(대소문자) 찾음
(22) [:alnum:] : 영문자와 숫자
(23) [:xdigit:] : 16진수, [0-9a-fA-F]
(24) [:punct:] : 구두점 기호
(25) [:blank:] : 공백 문자
(26) [:space:] : 공간 문자 (스페이스, 엔터, 탭)
3. PERL 연산자
(1) \d : 숫자
(2) \D : 숫자가 아닌 모든 문자 ( [^[:digit:]] 과 동일 )
(3) \w : 숫자와 영문자
(4) \W : 숫자와 영문자가 아닌 모든 문자 (언더바 제외) ( [^[:alnum:]_] )
(5) \s : 공백 문자
(6) \S : 공백 문자가 아닌 모든 문자
- 수량사와 유사함, 비탐욕적으로 동작
- nongreedy방식 : 패턴을 최소로 일치시킴
(7) ‘ ?? ‘ : 0회 또는 1회 일치
(8) ‘ *? ‘ : 0회 또는 그 이상의 횟수로 일치
(9) ‘ +? ‘ : 1회 또는 그 이상의 횟수로 일치
(10) {m}? : m회 일치
(11) {m,}? : 최소 m회 일치
(12) {, m}? : 최대 m회 일치
(13) {m,n}? : 최소 m회 일치, 최대 n회 일치
4. REGEXP_LIKE 함수
: REGEXP_LIKE ( 검색문자열 지정, 검색 패턴 지정, 일치 옵션 지정)
일치하면 TRUE, 일치하지 않으면 FALSE 리턴.
5. REGEXP_REPLACE 함수
: REGEXP_REPLACT( 검색 문자열 지정, 검색 패턴, 변경 문자열 지정, 변경위치, 패턴일치 횟수 지정)
변경한 값을 반환
6. REGEXP_SUBSTR 함수
: REGEXP_SUBSTR (검색 문자열, 검색 패턴, 검색 시작 위치, 패턴 일치 횟수, 서브 표현식 지정)
일치한 패턴을 반환
7. REGEXP_INSTR 함수
: REGEXP_INSTR (검색 문자열, 검색 패턴, 검색 시작 위치, 패턴 일치 횟수, 반환 옵션 지정, 일치 옵션 지정, 서브 표현식 지정)
검색 문자열에서 일치한 패턴의 시작 위치를 정수로 반환
8. REGEXP_COUNT 함수
: REGEXP_COUNT(검색 문자열, 검색 패턴, 시작위치, 일치옵션)
검색 문자열에서 일치한 패턴의 횟수를 반환