[Oracle] 정규 표현식

Ming·2024년 11월 19일

BackEnd

목록 보기
6/6

회사에서 쿼리 작성할 일이 많다보니, 수습 종료 발표와 함께 지난 주에 SQLD 시험을 응시했었고 그 때 정규표현식은 대충 공부하고 봤었다.
시험 때문에 회사 쿼리는 대충 프로젝트 마무리 할 정도로만 쓰윽 보고 끝나고 찬찬히 봐야지 했는데... 좀 더 열심히 볼 걸 그랬다..

시험 끝나고 이번 주에는 쿼리를 집중적으로 확인하고 있는데.. 아니 웬걸.. SQLD에서 본 함수가 그대로 있는게 아닌가.. 심지어 시험볼 때 이게 뭐람 하고 찍었는데..ㅎ
그래서 이번 기회에 정규 표현식을 제대로 짚고 넘어가고자 포스팅을 하게 되었다.

REGEXP_REPLACE

  • replace 함수를 확장한 개념
  • 주어진 문자열에서 특정 패턴을 찾아 주어진 다른 모양으로 치환하는 함수
REGEXP_REPLACE (source_char, pattern
							[, replace_string
                            [, position
                            [, occurrence
                            [, match_param[[[
)
  1. 첫번째 인수
    Source_char  : 원본데이터, 컬럼명이나, 문자열이 올수 있다.
  2. 두번째 인수
    pattern : 찾고자 하는 패턴을 의미
  3. 세번째 인수
    replace_string : 변환하고자 하는 형태
  4. 네번째 인수
    position  : 검색 시작 위치를 지정, 아무런 값도 주지 않을 경우 기본값 1
  5. 다섯 번째 인수
    occurrence : 패턴과 일치가 발생하는 횟수를 의미, 0은 모든 값을 대채, 다른 n이란 숫자를 주면 n번째 발생하는 문자열을 대입
  6. 여섯 번째 인수
    match_parameter : 기본값으로 검색되는 옵션을 바꿀수 있다.
    • c : 대소문자를 구분해서 검색   
    • i : 대소문자를 구분하지 않고 검색   
    • m : 검색 조건을 여러 줄로 줄 수 있음   
    • c와 i가 중복으로 설정되면 마지막에 설정된 값을 사용

[ 예시 ]

REGEXP_REPLACE(Source_Char, 'M{(.*?)}D{(.*?)}P{(.*?)}', '\2')

M{}: M으로 시작하고 {}로 둘러싸인 내용이 있다.
D{}: D로 시작하고 {}로 둘러싸인 내용이 있다.
P{}: P로 시작하고 {}로 둘러싸인 내용이 있다.
'\2'는 정규 표현식에서 찾은 매칭 그룹 중 두 번째 그룹을 의미
첫 번째 M{...}와 P{...} 부분은 무시되고, 두 번째 D{...} 안의 내용만 추출된다.
(.*?)는 모든 문자를 최소한으로 일치시키는 정규표현식

0개의 댓글