정규 표현식
- 문자열의 공통 규칙을 일반화 해서 표현
- 정규 표현식 사용 가능한 문자 함수 제공
- 특정 패턴 찾기에 유리
정규 표현식 종류
1️⃣ 기본 메타 문자
| 표현식 | 의미 | |
|---|
. | 임의의 문자 1개 | |
^ | 문자열 시작 | |
$ | 문자열 끝 | |
\ | 이스케이프 문자 | |
| ` | ` | OR |
2️⃣ 문자 클래스
| 표현식 | 의미 |
|---|
[abc] | a, b, c 중 하나 |
[^abc] | a, b, c 제외 |
[a-z] | 소문자 a~z |
[A-Z] | 대문자 A~Z |
[0-9] | 숫자 |
[가-힣] | 한글 |
3️⃣ 수량자
| 표현식 | 의미 |
|---|
* | 0회 이상 |
+ | 1회 이상 |
? | 0 또는 1회 |
{n} | 정확히 n회 |
{n,} | n회 이상 |
{n,m} | n~m회 |
4️⃣ 위치 지정자 (앵커)
| 표현식 | 의미 |
|---|
^abc | abc로 시작 |
abc$ | abc로 끝 |
\b | 단어 경계 |
\B | 단어 경계 아님 |
5️⃣ 미리 정의된 문자 클래스
| 표현식 | 의미 |
|---|
\d | 숫자 |
\D | 숫자 아님 |
\w | 문자 + 숫자 + _ |
\W | \w 제외 |
\s | 공백 |
\S | 공백 아님 |
기타
| 목적 | 정규식 |
|---|
| 숫자만 | ^[0-9]+$ |
| 영문만 | ^[A-Za-z]+$ |
| 한글만 | ^[가-힣]+$ |
| 영문+숫자 | ^[A-Za-z0-9]+$ |
| 주민번호 (간단) | ^\d{6}-\d{7}$ |
| 전화번호 | ^01[0-9]-\d{3,4}-\d{4}$ |
| 이메일 | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
정규 표현식 함수
REGEXP_LIKE 조건
REGEXP_LIKE(검색 문자열, 검색 패턴 [, 일치 옵션])
- 일치 옵션
- i : 대소문자 무시
- c : 대소문자 구분
- n
.을 줄바꿈과 일치
- m : 다중 행 모드
- x : 공백 무시
REGEXP_REPLACE
- 검색 문자열과 일치한 패턴을 변경 값으로 변경 후 리턴
REGEXP_REPLACE(검색문자열, 패턴 [,변경 문자열[,검색 시작 위치 [, 패턴 일치 횟수 [, 일치 옵션]]]])
REGEXP_SUBSTR
REGEXP_SUBSTR(검색문자열, 검색패턴 [,검색 시작 위치 [, 패턴 일치 횟수 [, 일치 옵션 [,서브표현식]]]]])
REGEXP_INSTR
- 검색 문자열에서 일치한 패턴의 위치를 정수로 반환
REGEXP_INSTR(검색문자열, 검색패턴 [,검색 시작 위치 [, 패턴 일치 횟수 [, 반환옵션 [, 일치 옵션 [,서브표현식]]]]])
REGEXP_COUNT
REGEXP_SUBSTR(검색문자열, 검색패턴 [,검색 시작 위치 [, 패턴 일치 옵션]])