본문으로 바로가기

REGEXP_REPLACE 함수

- 주어진 문자열에서 특정 패턴을 찾아서 주어진 다른 모양으로 치환하는 함수

 

사용 예제 1 : 모든 숫자를 특수 기호로 변경하기

‘[[:digit:]] 부분은 [:문자클래스:]의 형태로 표현을 합니다. 그리고 “문자 클래스”에 들어갈 수 있는내용은 alpha, blank, cntrl, digit, graph, lower, print, space, upper, xdigit의 종류가 있습니다.

많이 사용되는 것의 예를 들면 [:digit:]는 [0-9]의 의미이고 [:alpha:]는 [A-Za-z]와 같은 의미를 나타내고 [:space:]는 공백을 의미합니다.

 

사용 예제 2 : 특정 패턴을 찾아서 패턴을 변경하기

숫자를 찾아서 숫자 뒤에 ‘-*’를 추가하는 예제입니다.

 

 

 

비슷한 예로 아래 화면은 ip부분의 .(dot) 부분을 모두 삭제하고 출력하는 예입니다.

 

사용 예제 3 : 사용자에게 입력받은 문자 가운데 공백이 여러 개 들어 있을 경우 그 공백을 제거시키는 방법

예를 들어, 사용자 ID가 ‘aaa bbb’ 처럼 중간에 공백이 있을 경우 ‘aaa’와 ‘bbb’사이에 공백을 없애고 출력하는 방법입니다.

위 예제에서 {1,} 부분을 {1}로 해도 됩니다. 위 예에서 { } 내의 숫자는 앞 문자가 나타나는 횟수 또는 범위를 의미합니다. 예를 들어, a{5}의 의미는 ‘a’의 5번 반복인 aaaaa만을 의미합니다. 이 형태의 변형인 a{3,}은 ‘a’가 세 번 이상 반복인 aaa, aaaa, aaaaa, … 등을 의미합니다. 그리고 a{3, 5}의 의미는 aaa, aaaa, aaaaa를 의미하며 ab{2,3}은 뒤의 b가 두 번과 세 번 반복된 형태인 abb와 abbb를 의미합니다.

 

다음 예는 ‘abc bbb’에서 ( ) (괄호 사이는 공백)이 {2,} (두 칸 이상)인 것을 찾아서 “(공백을 제거)하라는 의미입니다. 그래서 그 결과로 공백이 한 칸인 첫 번째 ‘aaa bbb’값은 공백이 제거되지 않은 채 출력되었고 공백이 두 칸인 두 번째 ‘aaa bbb’은 공백이 제거되어 출력되었습니다.

 

다른 예를 한 가지 더 살펴보겠습니다.

이해가 되셨나요? 공백이 세 칸이여도. {2,}는 2칸 이상을 의미하다는 걸 잊지 않으셔야 합니다!