카테고리:

문자열 함수(정규식)

REGEXP_SUBSTR_ALL

문자열 내의 정규식과 일치하는 모든 하위 문자열을 포함하는 ARRAY 를 반환합니다. 일치하는 항목이 없을 경우 이 함수는 빈 ARRAY를 반환합니다.

별칭:

REGEXP_EXTRACT_ALL

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

구문

REGEXP_SUBSTR_ALL( <subject> , <pattern> [ , <position> [ , <occurrence> [ , <regex_parameters> [ , <group_num> ] ] ] ] )
Copy

인자

필수:

subject

일치 항목을 검색할 문자열입니다.

pattern

일치할 패턴입니다.

패턴 지정에 관한 지침은 문자열 함수(정규식) 섹션을 참조하십시오.

선택 사항:

position

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

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

occurrence

일치 항목을 반환하기 시작할 첫 번째 패턴 항목을 지정합니다. 함수는 첫 occurrence - 1 개의 일치 항목을 건너뜁니다.

예를 들어 5 개의 일치 항목이 있고 occurrence 인자에 대해 3 을 지정할 경우 이 함수는 처음 두 일치 항목은 무시하고 세 번째, 네 번째, 다섯 번째 일치 항목을 반환합니다.

기본값: 1

regex_parameters

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

  • c: 대/소문자를 구분합니다.

  • i: 대/소문자를 구분하지 않습니다.

  • m: 여러 줄 모드입니다.

  • e: 하위 일치 항목을 추출합니다.

  • s: 〈.〉 와일드카드는 줄 바꿈과도 일치합니다.

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

기본값: c

참고

기본적으로 REGEXP_SUBSTR_ALL은 주제에서 일치하는 전체 부분을 반환합니다. 그러나 e (《추출》의 경우) 매개 변수가 지정되면 REGEXP_SUBSTR_ALL은 패턴의 첫 번째 그룹과 일치하는 주제 부분을 반환합니다. e 가 지정되었지만 group_num 도 지정되지 않은 경우, group_num 의 기본값은 1(첫 번째 그룹)입니다. 패턴에 하위 식이 없으면 REGEXP_SUBSTR_ALL은 e 가 설정되지 않은 것처럼 작동합니다. e 를 사용하는 예는 이 항목의 를 참조하십시오.

group_num

group_num 매개 변수는 추출할 그룹을 지정합니다. 그룹은 정규식에서 괄호를 사용하여 지정됩니다.

group_num 가 지정되면 Snowflake는 추출을 허용합니다. 'e' 옵션도 지정하지 않은 경우에도 마찬가지입니다. 'e' 는 내포되어 있습니다.

Snowflake는 최대 1024개의 그룹을 지원합니다.

group_num 를 사용하는 예는 이 항목의 를 참조하십시오.

반환

함수는 ARRAY 형식의 값을 반환합니다. ARRAY는 일치하는 각 부분 문자열의 요소를 포함합니다.

사용자가 group_num 를 지정하는데 패턴은 그 번호로 그룹화를 지정하지 않을 경우, 이 함수는 NULL 을 반환합니다. 예를 들어 패턴이 하나의 그룹(예: a(b)c)만 지정하고 사용자가 2group_num 로 사용할 경우, 이 함수는 NULL을 반환합니다.

사용법 노트

정규식 사용에 대한 추가 정보는 문자열 함수(정규식) 섹션을 참조하십시오.

데이터 정렬 세부 정보

Arguments with collation specifications are currently not supported.

다음 예의 패턴은 소문자 《a》 다음에 숫자가 오는 패턴과 일치합니다. 이 예에서는 모든 일치 항목을 포함한 ARRAY를 반환합니다.

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

다음 예에서는 문자열의 두 번째 문자(2)에서 일치 항목 찾기를 시작합니다.

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 2) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a2", |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

다음 예에서는 문자열에서 세 번째 패턴 발생 항목(3)에서 일치 항목을 반환하기 시작합니다.

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 3) as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a3", |
|   "a4", |
|   "a6"  |
| ]       |
+---------+
Copy

다음 예에서는 대/소문자를 구분하지 않는 일치 항목 찾기(i)를 수행합니다.

select regexp_substr_all('a1_a2a3_a4A5a6', 'a[[:digit:]]', 1, 1, 'i') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a1", |
|   "a2", |
|   "a3", |
|   "a4", |
|   "A5", |
|   "a6"  |
| ]       |
+---------+
Copy

다음 예에서는 대/소문자를 구분하지 않는 일치 항목 찾기를 수행하고 첫 번째 그룹(ie)과 일치하는 문자열 부분을 반환합니다.

select regexp_substr_all('a1_a2a3_a4A5a6', '(a)([[:digit:]])', 1, 1, 'ie') as matches;
+---------+
| MATCHES |
|---------|
| [       |
|   "a",  |
|   "a",  |
|   "a",  |
|   "a",  |
|   "A",  |
|   "a"   |
| ]       |
+---------+
Copy

다음 예에서는 일치하는 항목을 찾을 수 없을 때 이 함수가 빈 ARRAY를 반환함을 보여줍니다.

select regexp_substr_all('a1_a2a3_a4A5a6', 'b') as matches;
+---------+
| MATCHES |
|---------|
| []      |
+---------+
Copy