Looker Studio의 정규 표현식

정규 표현식 (regexp)은 데이터 내에서 광범위하게 또는 세부적으로 일치하는 패턴을 찾아내는 특정 문자 시퀀스입니다. 정규 표현식을 사용하여 차트와 컨트롤에서 더욱 유연한 필터를 만들 수 있습니다. 계산된 필드 수식에서 다음과 같은 정규 표현식 함수를 사용할 수도 있습니다.

REGEXP_CONTAINS 입력 값에 정규 표현식 패턴이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

REGEXP_CONTAINS에 대해 자세히 알아보기
REGEXP_EXTRACT 정규 표현식 패턴과 일치하는 입력 값에서 처음 일치하는 하위 문자열을 반환합니다.

REGEXP_EXTRACT에 대해 자세히 알아보기
REGEXP_MATCH 입력 값이 정규 표현식 패턴과 일치하면 true를 반환하고 그렇지 않으면 false를 반환합니다.

REGEXP_MATCH에 대해 자세히 알아보기
EGEXP_REPLACE 입력 값의 정규 표현식 패턴과 일치하는 모든 텍스트를 replacement 문자열로 대체합니다.

EGEXP_REPLACE에 대해 자세히 알아보기

정규 표현식의 대안

정규 표현식 만들기는 복잡할 수 있습니다. 정규 표현식 함수를 사용하기 전에 더 간단한 텍스트 함수를 사용해도 목표 달성에 문제가 없는지 생각해 보세요. 다음 함수는 정규식 문법을 몰라도 정규 표현식과 유사한 기능을 제공합니다.

함수 설명
CONTAINS_TEXT

지정된 텍스트가 필드 또는 표현식에 있으면 True를 반환하고 그렇지 않으면 False를 반환합니다.

ENDS_WITH

필드 또는 표현식이 지정된 텍스트로 끝나면 True를 반환하고 그렇지 않으면 False를 반환합니다.

LEFT_TEXT

지정된 문자열의 첫 문자부터 문자 수를 세어 반환합니다.

REPLACE 검색 텍스트가 대체 텍스트로 모두 교체된 원본 텍스트의 사본을 반환합니다.
RIGHT_TEXT

지정된 문자열의 끝에서부터 지정된 수의 문자를 반환합니다.

STARTS_WITH

필드 또는 표현식이 지정된 텍스트로 시작하면 True를 반환하고 그렇지 않으면 False를 반환합니다.

TRIM

앞뒤 공백을 삭제한 텍스트를 반환합니다.

정규 표현식 예시

MyField에 공백 문자가 있으면 일치합니다.

REGEXP_CONTAINS(MyField, "\\s+")

URL에서 최상위 수준 디렉터리를 추출합니다.

REGEXP_EXTRACT(URL, ^https://[^/]+/([^/]+)/)

예를 들어 URL 필드에 이 페이지의 주소가 포함되어 있으면 이전 함수는 looker-studio를 반환합니다.

언어를 기준으로 광고 캠페인을 분류합니다.

CASE
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*en\s*\|.*") then "English"
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*es\s*\|.*") then "Spanish"
    ELSE "Other language"
END

예를 들어 Google 애널리틱스 데모 계정의 캠페인 측정기준에 이 정규 표현식을 적용하면 다음과 같은 결과가 표시됩니다.

캠페인 언어
캠페인 #1 기타 언어
1000549 | Google 애널리틱스 데모 | DR | apontes | 북미 | 미국 | en | 하이브리드 | AW SEM | BKWS | ~ AW - Google 브랜드 (미국) 영어
1000549 | Google 애널리틱스 데모 | DR | apontes | 북미 | 캐나다 | 스페인어 | 하이브리드 | AW SEM | BKWS | ~ AW - YouTube (캐나다) 스페인어

문자열에서 섹션 순서를 바꿉니다.

REGEXP_REPLACE(Campaign, R'(.*):(.*)', R'\2 \1')

위의 예에서 각 섹션은 콜론 (:)으로 구분됩니다.

메타 문자

메타 문자는 정규 표현식에서 특별한 의미를 갖는 문자입니다. 다음은 일반적으로 사용할 수 있는 메타 문자의 예입니다. 이러한 예는 Google 애널리틱스 고객센터에서 확인할 수 있으나 고객센터에서 제공되는 정보는 Looker Studio에도 동일하게 적용됩니다.

와일드 카드

. 글자, 숫자 또는 기호 등의 단일 문자를 의미합니다. 1. 10, 1A와 일치

1.1 111, 1A1과 일치

? 앞의 문자와 0회 또는 1회 일치합니다. 10?은 1, 10과 일치합니다.

+ 앞의 문자와 1회 이상 일치합니다. 10+는 10, 100과 일치합니다.

* 앞의 문자와 0회 이상 일치합니다. 1* 는 1, 10과 일치합니다.

| OR 검색을 만듭니다.

표현식의 끝에 사용하지 마세요.
1|10은 1, 10과 일치합니다.

앵커

^ 문자열 앞 부분의 인접 문자와 일치합니다. ^10은 10 , 10 0, 10 x

와 일치합니다. ^10은 1 10 , 1 10 x

와 일치하지 않습니다.
$ 문자열 끝부분의 인접 문자와 일치합니다. 10$ 는 1 10 , 10 10 과 일치합니다.

10$ 는 10 0, 10 x와 일치하지 않습니다.

그룹

( ) 문자열에 정확하게 일치하는 순서로 포함된 문자와 일치합니다.

다른 표현식을 그룹화하는 데도 사용됩니다.
(10)은 10 , 10 1, 10 11과 일치합니다.

([0-9]|[a-z])는 모든 숫자 또는 소문자와 일치합니다.

[ ] 문자열에 순서에 상관없이 일치하는 문자가 포함되어 있으면 반환합니다. [10] 은 01 2, 1 20, 2 10 과 일치합니다.

- 대괄호 안에 문자 범위를 만들면 문자열에서 모두 일치합니다. [0-9] 는 0~9의 모든 숫자와 일치합니다.

이스케이프

\\

인접한 문자를 정규식 메타 문자가 아닌 문자 그대로 해석해야 함을 나타냅니다.

\\은 인접한 점을 와일드 카드가 아닌 마침표 또는 소수점으로 해석해야 한다는 것을 나타냅니다.

216\\.239\\.32\\.34는 216.239.32.34와 일치합니다.

문자 클래스

\d 숫자 (≡ [0-9])
\D 숫자가 아님 (≡ [^0-9])
\s 공백 (≡ [\t\n\f\r ])
\S 공백이 아님 (≡ [^\t\n\f\r ])
\w 단어 문자 (≡ [0-9A-Za-z_])
\W 단어 문자가 아님 (≡ [^0-9A-Za-z_])

간단한 표현식 사용

정규 표현식을 간결하게 유지합니다. 표현식이 간단하면 다른 사용자가 더 쉽게 이해하고 수정할 수 있습니다.

대소문자 구분

정규 표현식은 기본적으로 대소문자를 구분합니다. (?i) 플래그를 사용하면 대소문자를 구분하지 않는 값을 찾을 수 있습니다. 예를 들어 다음 표현식은 'abc123'과 'ABC123'을 모두 추출합니다.

REGEXP_EXTRACT(MyField, '(?i)(a.*)')

백슬래시 이스케이프

앞에서 설명한 것처럼, 정규 표현식 메타 문자를 문자 그대로 해석해야 할 때 백슬래시 (\)를 사용하여 이스케이프 처리할 수 있습니다. 따옴표로 묶인 문자열에서 백슬래시를 찾으려면 백슬래시도 이스케이프 처리해야 하므로 결과적으로 표현식에 2개의 백슬래시가 사용됩니다. 예를 들면 다음과 같습니다.

REGEXP_REPLACE(String, "(\\[.*\\])\\+(\\[.*\\])","\\2 \\1")

또는 원시 문자열 리터럴 접두사 R을 사용할 수도 있습니다.

REGEXP_REPLACE(String, R"(\[.*\])\+(\[.*\])",R"\2 \1")