Atomic Habits

[Oracle, postgreSQL] 정규식 REGEXP_REPLACE 함수 본문

IT/Regular Expressions

[Oracle, postgreSQL] 정규식 REGEXP_REPLACE 함수

체계성 2021. 11. 20. 12:46

참조 : https://neocan.tistory.com/348 (정규식 문법) 

참조: https://lee-mandu.tistory.com/40 (Replace 옵션)

참조 : https://runebook.dev/ko/docs/postgresql/functions-matching (정규식 문법 상세)

 

이 함수는 replace 함수를 확장한 개념으로 주어진 문자역에서 특정 패턴을 찾아서 주어진 다른 모양으로 치환하는 함수이다.

 

문법

REGEXP_REPLACE (source_char, pattern

                         [, replace_string

                         [, position

                         [, occurrence

                         [, match_param[[[

)

 

첫번째 인수 Source_char 

 : 원본데이터, 컬럼명이나, 문자열이 올수 있다.

 

두번쨰 인수 pattern

 : 찾고자 하는 패턴을 의미

 

세번째 인수 replace_string

 : 변환하고자 하는 형태

 

네번째 인수 position 

 : 검색 시작 위치를 지정, 아무런 값도 주지 않을 경우 기본값 : 1

 

다섯 번째 인수 occurrence

 : 패턴과 일치가 발생하는 횟수를 의미, 0은 모든 값을 대채, 다른 n이란 숫자를 주면 n번째 발생하는 문자열을 대입

 

여섯 번째 인수 match_parameter

 : 기본값으로 검색되는 옵션을 바꿀수 있다.

   - c : 대소문자를 구분해서 검색

   -  i : 대소푼자를 구분하지 않고 검색

   - m : 검색 조건을 여러 줄로 줄 수 있음

   - c와 i가 중복으로 설정되면 마지막에 설정된 값을 사용 ex) ic가 중복으로 절정되면  c 옵션 적용

 

REGEXP_REPLACE 함수 실습

 

모든 숫자를 특수 기호로 변경하기

SELECT text, regexp_replace(text, '[[:digit:]]', '+') "숫자->기호" FROM TEST

 

 

 

 

특정 패턴을 찾아서 패턴을 추가하기

SELECT text, regexp_replace(text, '([0-9])', '\1*') "숫자->패턴" FROM TEST

 

 

 

지역번호가 2자리이고 전화국번이 4자리인 전화번호인 학생 찾기

SELECT NAME, tel FROM student 

WHERE regexp_replace(tel, '(\d{2})\)(\d{4})\-(\d{4})','\2') > '5000'

 

 

 

전공이 101번인 학생의 이름 변경하기 (홍-길-동)

SELECT name, RTRIM(regexp_replace(name, '(.)', '\1-'), '-') "변경후" FROM student

WHERE deptno1=101

 

 

 

특정 문자열을 다른 형태로 바꿀때

SELECT REGEXP_REPLACE('20120324', 

'([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{2})',

'\1 : \2 : \3') FROM dual

 

 




'IT > Regular Expressions' 카테고리의 다른 글

정규식 간단 강좌 1-8편  (0) 2021.11.24
정규 표현식 (좀 더) 깊이 알아보기  (0) 2021.11.24
풀어 쓴 정규식  (0) 2021.11.24
[JAVA] 정규식/정규표현식  (0) 2021.11.22
정규식 전후방탐색(vim 포함)  (0) 2021.11.20
Comments