카테고리:

문자열 함수(정규식)

REGEXP_REPLACE

지정된 패턴(또는 패턴의 모든 발생 항목)이 제거되거나 대체 문자열로 바뀐 주제를 반환합니다. 일치하는 항목이 없으면 원래 주제를 반환합니다.

문자열 함수(정규식) 도 참조하십시오.

구문

REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
Copy

인자

필수:

subject

일치할 주제입니다.

pattern

일치할 패턴입니다.

선택 사항:

replacement

패턴과 일치하는 하위 문자열을 바꾸는 문자열입니다. 빈 문자열이 지정된 경우, 함수는 일치하는 모든 패턴을 제거하고 결과 문자열을 반환합니다.

기본값: '' (빈 문자열).

position

함수가 일치 항목 검색을 시작하는 문자열 시작 부분의 문자 수입니다.

기본값: 1 (일치 항목 검색은 왼쪽의 첫 번째 문자에서 시작됨)

occurrence

패턴의 어느 발생 항목을 바꿀지 지정합니다. 0 이 지정된 경우, 모든 발생 항목이 바뀝니다.

기본값: 0 (모든 발생 항목)

parameters

일치 항목을 검색하는 데 사용되는 매개 변수를 지정하는 하나 이상의 문자로 된 문자열입니다. 지원되는 값:

c , i , m , e , s

자세한 내용은 정규식 매개 변수 를 참조하십시오.

기본값: c

사용법 노트

  • 대체 문자열은 캡처 그룹(즉, 패턴의 하위 식)에 대한 역참조를 포함할 수 있습니다. 캡처 그룹은 괄호(( ))로 묶인 정규식입니다. 캡처 그룹의 최대 수는 9입니다.

    역참조는 캡처 그룹 내의 식과 일치합니다. 역참조는 n 형식을 취하며, 여기서 n 은 0에서 9까지의 값으로, 캡처 그룹의 일치 인스턴스를 나타냅니다. 자세한 내용은 이 항목에 있는 를 참조하십시오.

  • 괄호(( )) 및 대괄호([ ])는 리터럴 문자열로 구문 분석하려면 현재 이중 이스케이프 처리해야 합니다.

    아래 예는 괄호를 제거하는 방법을 보여줍니다.

    SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
    
    +----------------+
    | CUSTOMERS      |
    |----------------|
    | Customers - NY |
    +----------------+
    
    Copy
  • 추가적인 사용법 노트는 정규식 함수에 대한 일반적인 사용법 노트 을 참조하십시오.

데이터 정렬 세부 정보

Arguments with collation specifications are currently not supported.

다음 예는 문자열의 모든 공백을 없는 것으로 바꿉니다(즉, 모든 공백이 제거됨).

select regexp_replace('It was the best of times, it was the worst of times', '( ){1,}','') as "result" from dual;

+------------------------------------------+
| result                                   |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+
Copy

다음 예는 문자열 times 와 일치하며, 이를 문자열 days 로 바꿉니다. 일치는 문자열의 첫 번째 문자에서 시작하며, 하위 문자열의 두 번째 발생 항목을 바꿉니다.

select regexp_replace('It was the best of times, it was the worst of times', 'times','days',1,2) as "result" from dual;

+----------------------------------------------------+
| result                                             |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+
Copy

다음 예는 역참조를 사용하여 문자열 firstname middlename lastnamelastname, firstname middlename 으로 재정렬하고 lastnamefirstname 사이에 쉼표를 삽입합니다.

select regexp_replace('firstname middlename lastname','(.*) (.*) (.*)','\\3, \\1 \\2') as "name sort" from dual;

+---------------------------------------------------------------------------------+
| REGEXP_REPLACE('FIRSTNAME MIDDLENAME LASTNAME','(.*) (.*) (.*)','\\3, \\1 \\2') |
|---------------------------------------------------------------------------------|
| lastname, firstname middlename                                                  |
+---------------------------------------------------------------------------------+
Copy