본문 바로가기

IT관련

오라클 정규표현식 함수 regexp_replace 샘플예제 (문자열 바꿔치기, 치환)

Oracle Regular Expression 함수 regexp_replace( ) 는 replace( ) 함수에 정규표현식을 쓸 수 있도록 확장한 함수 입니다.

replace( ) 함수가 대상문자열에서 특정 문자열(Search String) 찾아서 다른 문자열로 바꿔치기 해주는 함수인데,

regexp_replace( ) 함수는 Search String 대신에 "정규표현식"을 쓴다는 점이 다릅니다.

 

regexp_replace() 함수의 구문(Syntax)은 다음과 같습니다.

 

 

source_char : 대상 문자열

pattern : 정규표현식 패턴

replace_string : 바꿔치기할 문자열

position : 문자열내에서 (패턴을 체크할) 처음 시작 위치

occurrence : 몇번째 일치하는 건지.  ( 0 이면 전부 바꿔치기 )

match_param : 'i' (대소문자 무시),  'c' (대소문자 구분)

 

 

예제를 통해서 사용법을 확인해보면,

 

 

 문자열내에서 'CD' 를 '--' 으로 바꿔치기 (대소문자 구분)

'c' 인자를 줬기 때문에 대소문자를 구분해서 cd 는 놔두고, CD 문자들만 -- 로 대체되었습니다.

5번째 인자에 0 을 줬기 때문에 일치하는 모든 문자열을 바꿔치기 합니다.

0 이 아닌 값을 주면, 일치하는 n 번째 문자열만 바꿔치기 할 수 있습니다.

 

 

♣ 문자열에서 숫자만 모조리 제거하기

패턴 [^[:alpha:]] 에서 [:alpha] 는 앞파벳(대소문자포함)을 가리키는 문자셋입니다.

앞에 ^가 붙어있으니 부정의 의미가 됩니다. 즉, 알파벳이 아닌것들을 찾아라~~ 입니다.

 

regexp_replace( ) 함수에서 3번째 replace_string 들어갈 자리를 지정하지 않으면 null 을 의미합니다.

 

즉, 알파벳이 아닌 놈들을 찾아서 모두 null 로 바꿔라~  모두 제거하라~  가 되겄습니다.

 

 

♣ 문자열에서 알파벳문자들만 특수문자 # 으로 대체하기

알파벳이 아니라 숫자를 바꾸려면 [[:alpha:]] 대신에 [[:digit:]] 를 사용하면 됩니다.

 

물론, [[:digit:]] 대신에 [[0-9]] 를 써도 되고, [[:alpha:]] 대신에 [A-Za-z] 를 써도 됩니다.

 

 

♣ 문자열에서 한글 문자들만 제거하기

UTF8 한글의 경우, '가' 글자부터 시작해서 '힟' 으로 끝나기 때문에 [가-힟] 으로 패턴을 지정하면 모든 한글이 됩니다.

EUC-KR 한글의 경우에는 마지막 글자가 '힟' 이 아니라 '힝' 입니다.

그래서 EUC-KR 인 경우는 패턴문자열을 [가-힝] 으로 지정해줘야 모든 한글이 잡히게 됩니다.

 

 

▶ 참고 : 오라클 정규표현식(Regular Expression) 소개 메인 페이지