regexp_extract 기능

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

str에서 regexp 식과 일치하고 regex 그룹 인덱스에 해당하는 첫 번째 문자열을 추출합니다.

구문

regexp_extract(str, regexp [, idx] )

인수

  • str STRING: 일치시킬 식입니다.
  • regexp STRING: 일치하는 패턴이 있는 식입니다.
  • idx: 0보다 크거나 같은 선택적 정수 식입니다(기본값 1).

반품

STRING.

, 또는 이면 str결과는 .입니다regexp.idxNULLNULL regexp 일부str와 일치하지 않으면 결과는 빈 문자열입니다. 전체 패턴이 일치하지만 지정된 idx 그룹이 일치 항목에 참여하지 않는 경우 결과는 빈 문자열입니다.

regexp 문자열은 Java 정규식이어야 합니다. 지원되는 구문은 Java 정규식 패턴을 참조하세요.

리터럴을 사용하는 경우 (raw-literal접두사)r 이스케이프 문자 사전 처리를 방지합니다.

regexp에는 여러 그룹이 포함될 수 있습니다. 캡처 그룹은 패턴의 일부를 괄호로 묶어 정의합니다 (...). idx는 추출할 regex 그룹을 나타냅니다. 0의 idx는 전체 정규식을 일치시키는 것을 의미합니다. 기본값 idx 은 1입니다. 즉, 생략하면 첫 번째 캡처 그룹이 반환 idx 됩니다.

정의된 idx캡처 그룹 수보다 크면 regexp Databricks에서 오류가 발생합니다.

첫 번째 일치 regexpstr 항목만 고려됩니다. 모든 일치 항목을 추출하려면 regexp_extract_all 사용합니다.

일반적인 오류 조건

예제

특정 캡처 그룹 추출

> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
 100

> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
 200

idx 0을 사용하여 전체 일치 항목 반환

> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
 100-200

기본 idx는 1입니다.

idx 생략하면 첫 번째 캡처 그룹이 반환됩니다.

> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
 abc

빈 문자열을 반환하는 일치 항목 없음

> SELECT regexp_extract('hello world', '(\\d+)', 1);

NULL 입력은 NULL을 반환합니다.

> SELECT regexp_extract(NULL, '(\\d+)', 1);
 NULL

원시 문자열 리터럴을 사용하여 이중 이스케이프 방지

일반 SQL 문자열에서 백슬라이시는 두 배가 되어야 합니다(\\d 의미 \d). 원시 문자열 리터럴의 r 접두사를 사용하여 패턴을 더 자연스럽게 작성합니다.

> SELECT regexp_extract('abc123', r'(\d+)', 1);
 123

URL에서 도메인 추출

> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
 www.databricks.com

날짜 문자열에서 구성 요소 추출

> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
 2024-03-15

> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
 03

일치 항목에 참여하지 않는 선택적 캡처 그룹

그룹이 선택 사항이며 일치하지 않으면 해당 그룹에 대해 빈 문자열이 반환됩니다.

> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);

잘못된 정규식 패턴

> SELECT regexp_extract('abc', '[invalid', 0);
  Error: INVALID_PARAMETER_VALUE.PATTERN