반응형

# 오라클 정규식 (REGEXP)

  • Regular Expression (정규식)
  • 오라클은 10g 부터 REGEXP 함수 지원.
  • 특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식적인 언어. (출처 : 위키백과)

## 오라클 정규식 종류

REGEXP_LIKE

  • 정규식 패턴 검색 (LIKE 와 유사)
  • REGEXP_LIKE(문자열, 정규식 패턴 [,매칭 매개변수])
  • 사용방법 : REGEXP_LIKE(문자열, '찾고자하는 값1|찾고자하는 값2|...|찾고자하는 값n')
// Z로 시작하는 것
SELECT COL1
FROM TEST
WHERE REGEXP_LIKE (COL2, '^Z(*)');


// Z로 끝나는 것
SELECT COL1
FROM TEST
WHERE REGEXP_LIKE (COL2, '(*)Z$');

REGEXP_REPLACE

  • 정규식 패턴 검색, 대체문제열로 변경
  • REGEXP_REPLACE(문자열, 정규식 패턴 [, 대체문자열[, 시작위치[, 일치횟수[, 매칭 매개변수]]]])
  • 사용방법1 : REGEXP_REPLACE(문자열, '대상문자열', '변경할 값') - 대상 문자열을 변경할 값으로 치환.
  • 사용방법2 : REGEXP_REPLACE(문자열, '대상문자열') - 대상 문자열을 제거만 하는 경우.
// 문자열에서 A, D, F를 ''로 변경. 
SELECT REGEXP_REPLACE('ABCDEFGHI', 'A|D|F', '')
FROM DUAL;


// 문자열에서 숫자를 모두 'A'로 변경.
SELECT REGEXP_REPLACE('asdasd123xfdf21asda', '\d', 'A')
FROM DUAL;

REGEXP_INSTR

  • 정규식 패턴을 검색, 위치 반환
  • REGEXP_INSTR(문자열, 정규식 패턴 [, 시작위치 [, 일치횟수 [, 반환할 문자위치 [, 매칭 파라미터]]]])
// 'Ja'가 처음 나타나는 위치 반환.
SELECT REGEXP_INSTR('Hello Java World!', 'Ja', 1, 1, 0, 'i')
FROM DUAL;

REGEXP_SUBSTR

  • 정규식 패턴을 검색, 부분 문자 추출
  • REGEXP_SUBSTR(문자열, 정규식 패턴 [, 시작위치 [, 일치횟수 [, 매칭 파라미터]]])
// 'o, d' 가 나타나면 반환.
SELECT REGEXP_SUBSTR('hello world!', 'o|d', 1, 1, 'i')
FROM DUAL

REGEXP_COUNT

  • 정규식 패턴을 검색, 패턴에 일치하는 문자열 갯수 카운트 (오라클 11g)

## 메타문자

^ 문자열의 시작을 표현
$ 문자열의 끝을 표현
\b 단어의 경계, 문자열 시작과 끝, 공백, 개행, 탭, 콤마, 구두점, 대시문자 등이 올 수 있음.
\s 공백 문자 및 탭 문자에 매치.
\w 단어를 만들 수 있는 글자 (알파벳 대소문자, 숫자, 언더스코어 포함) ([A-Za-z0-9_] 와 동일.)
\W \w에 포함되지 않는 문자들

## 자주 사용되는 정규 표현식

REGEXP_REPLACE(문자열, '[^A-Z0-9]', '') 숫자, 문자 제외 모두 제거
REGEXP_REPLACE(문자열, "\\[.*\\]", "") [, ] 사이의 문자를 공백 처리하기.
REGEXP_REPLACE(문자열, '[\s]{2,}', '') 공백 2개 이상인 경우 제거
REGEXP_REPLACE(문자열, '[[:punct:]]', '') 모든 특수문자 제거
REGEXP_REPLACE(문자열, '[[:digit:]]', '') 모든 숫자 제거
REGEXP_REPLACE(문자열, '[가-힣]', '') 모든 한글 제거
REGEXP_REPLACE(문자열, '[[:digit:]|[:punct:]]', '') 모든 숫자, 특수문자 제거
^[A-Z] 대문자로 시작하는 데이터
[A-Z] 대문자를 포함하는 데이터
[A-Z]$ 대문자로 종료하는 데이터
[ㄱ-ㅎㅏ-ㅣ가-힣] 한글을 포함하는 데이터
[0-9][2] 연속해서 숫자 2개를 포함하는 데이터
/[a-zA-Z0-9]/ 영문 대소문자와 숫자로만 구성
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ 이메일 주소
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/ 패스워드 (8자 이상, 영문 대소문자, 숫자, 특수문자 각 최소 1개 이상 포함)

참고 : https://support.google.com/a/answer/1371415?hl=ko

정규 표현식 구문 - Google Workspace 관리자 고객센터

정규 표현식을 만들려면 특수문자와 구성 규칙으로 이루어진 특정 구문을 사용해야 합니다. 예를 들어 다음은 nnn-nnn-nnnn 패턴의 10자리 전화번호와 일치하는 간단한 정규 표현식입니다. \d{3}-\d{3}

support.google.com

반응형

+ Recent posts