정규 표현식 (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")