정규식 캡처 그룹
정규식에서 하위 패턴을 괄호로 묶어
그룹을
정의할 수 있습니다. 정규식 그룹을 사용하여 다음을 수행할 수 있습니다.- 한 번에 전체 그룹에 정규식 연산자와 수량자를 적용합니다.
- 캡처링 그룹을 생성합니다.캡처링 그룹을 사용하여 정규식에서 저장하거나 반환할 매칭 값을 지정할 수 있습니다. 기본적으로 그룹은 매칭 항목을 생성하는 텍스트를캡처합니다. 그룹화된 하위 표현식과 일치하는 문자열 부분은 나중에 검색하거나 사용할 수 있도록 메모리에 캡처됩니다.
- 비포획 그룹을 생성합니다.
그룹 번호 매기기
정규식에는 2개 이상의 그룹이 포함될 수 있으며 그룹은 중첩될 수 있습니다. 그룹은 첫 번째 여는 괄호부터 시작하여 왼쪽에서 오른쪽으로 1-
n
으로 번호가 매겨집니다. 항상 전체 매칭을 포함하는 암시적 그룹 영(0)이 있습니다. 예를 들어 다음과 같습니다.(a(b*))+(c)
이 패턴에는 3개의 그룹이 포함됩니다.
group 1: (a(b*)) group 2: (b*) group 3: (c)
그룹 캡처 및 REGEX 함수
다음을 사용할 수 있습니다.
REGEX
문자열의 일부를 추출하는 함수 다음 REGEX
함수는첫 번째
캡처링 그룹의 값만 반환합니다.username
@provider
패턴의 이메일 주소가 포함된email
필드명이 있다고 가정합니다.도메인
. 다음을 사용할 수 있습니다. REGEX
이메일
필드에서 이메일 주소의제공자
부분만 반환하는 함수:REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")그룹 캡처 및 REGEX_REPLACE 함수
다음을 사용할 수 있습니다.
REGEX_REPLACE
함수를 사용하여 문자열을 매칭하고 매칭된 문자열을 다른 값으로 바꿉니다. 다음 REGEX_REPLACE
함수는 3개의 인수를 사용합니다.- 입력 문자열
- 정규식 매칭
- 대체 정규식
캡처링 그룹을 사용하여 역참조를 캡처할 수 있지만, 항상 전체 매칭 항목이 반환됩니다.
그룹 및 역참조 캡처
역참조를 사용하여 특정 캡처링 그룹 번호의 매칭된 내용을 다시 참조할 수 있습니다. 일반적으로 캡처링 그룹이 포함된 동일한 정규식에서 역참조를 사용합니다. 앞에 백슬래시가 있는 그룹 번호를 참조하여 역참조를 지정합니다. 사용
\1
- 캡처링 그룹 1 참조 \2
캡처링 그룹 2를 참조하는 식입니다.한 쌍의 HTML 태그와 그 안에 포함된 텍스트를 매칭한다고 가정합니다. 개시 태그를 캡처링 그룹으로 캡처한 다음, 역참조를 사용하여 해당 종료 태그를 매칭할 수 있습니다.
(<([A-Z][A-Z0-9]*)\b[^>]*>.*?</\2>)
이 정규식에는 2개의 캡처링 그룹이 포함됩니다.
- 그룹 1은 가장 바깥쪽 괄호를 포함하며 전체 문자열을 캡처합니다.
- 그룹 2는 다음에 매칭되는 문자열을 캡처합니다.[A-Z][A-Z0-9]*.
그러면 다음을 사용하여 그룹 2를 참조할 수 있습니다.
\2
해당 닫는 HTML 태그와 매칭되도록 역참조를 추가합니다. 다음을 사용하는 경우
REGEX_REPLACE
함수에서 역참조를 사용하여이전
정규식의 캡처링 그룹을 참조할 수 있습니다. 이전 정규식에서 역참조를 사용하여 그룹을 참조하는 경우 구문이 약간 다릅니다. 달러 기호($
)은 그룹 번호 앞에 있습니다(예: $1
이전 표현식의 그룹 1에 대한 역참조를 지정합니다. 값의 형식이 다음과 같은
전화번호
필드가 있다고 가정합니다. xxx.xxx.xxxx
. 다음 예에서는phone_number
의 값을 매칭하고 다음과 같은 형식의 값으로 바꿉니다. (xxx)
xxx-xxxx
:REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","\($1\) $2-$3")
대체 표현식에서 역참조를 확인합니다. 일치하는 이전 표현식의 캡처링 그룹을 참조합니다.
비수집 그룹
경우에 따라 괄호를 사용하여 하위 패턴을 그룹화하지만 텍스트는 캡처
하지 않을 수 있습니다
. 비포착 그룹은 다음으로 시작합니다. (?:
(여는 괄호 뒤에 물음표 및 콜론 포함) 예를 들어, h(?:a|i|o)t
매칭 hat
또는 hit
또는 hot
을(를) 캡처하지 않습니다. a
, i
, 또는 o
하위 표현식에서 가져옵니다.