DataBase/Oracle

[Oracle] 정규식 함수 REGEXP_REPLACE(문자열 치환)

mingmongs 2025. 4. 2. 09:26

title

오라클 10g부터 정규식을 사용할 수 있도록 함수가 추가되었다.
따라서 기존 REPLACE 함수를 정규식을 활용하여 문자열의 패턴을 찾아 더 간단하게 처리할 수 있게 되었다.
정규식을 활용한 REPLACE 함수는 REGEXP_REPLACE() 이고 구문(Syntax)는 아래와 같다.

 

REGXPP_REPALCE( source_char, patten 
                [, replace_string 
                    [, position 
                        [, occurrence 
                            [, match_param]
                        ]
                    ]
                ] 
              )
  • source_char : 대상 문자열
  • pattern : 정규표현식 패턴
  • replace_string : 바꿔치기할 문자열
  • position : 문자열내에서 (패턴을 체크할) 처음 시작 위치
  • occurrence : 몇번째 일치하는 건지. ( 0 이면 전부 바꿔치기 )
  • match_param : 'i' (대소문자 무시), 'c' (대소문자 구분)


메타 문자

.     임의의 한 문자
|     OR과 동일 (왼쪽 또는 오른쪽과 일치)
[]     문자 클래스
[-]    문자 범위 (0-9, a-z, A-Z, 가-힝)
[^]     부정 문자 클래스
\     다음에 오는 문자를 이스케이프 (메타 문자를 일반 문자로)
^     문자열의 시작과 일치
$     문자열의 끝과 일치

 

예시

--치환할 문자를 |로 구분하여 입력
SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs', 'Stay|Foolish|Steve', '*')
FROM DUAL;
-- 결과:  * Hungry, * *. - * Jobs

 -- 알파벳을 제외한 나머지 표시
SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[[:alpha:]]')
FROM DUAL;
-- 결과:   ,  . -   2005

 -- 알파벳만 표시
 SELECT REGEXP_REPLACE('Stay Hungry, Stay Foolish. - Steve Jobs 2005', '[^[:alpha:]]')
 FROM DUAL;
 -- 결과:  StayHungryStayFoolishSteveJobs

 

 


[reference]

https://gent.tistory.com/546 https://gent.tistory.com/82 https://jack-of-all-trades.tistory.com/388