GA4를 접하면서 정규 표현식 이라는 용어를 보고 “이게 뭐지?” 라고 생각해 본 적이 있으신가요?
이번 글이 많은 도움이 되지 않을까 싶습니다.
정규식 사용을 해 본적이 있더라도 이번 글에서 새롭게 배울 점이 있을 수 있습니다.
정규 표현식은 텍스트를 찾고, 추출하고, 바꾸고, 일치시키는 데 사용되는 특수한 문자 시퀀스로, 데이터 분석에서 텍스트 처리 작업을 위한 강력한 도구 입니다.
GA4의 컨텍스트에서 정규식을 사용하면 보고서의 데이터를 필터링 하는 등 다양한 작업을 수행할 수 있습니다.
그럼, 기본 구문과 패턴 등 정규 표현식을 작성하는 데 필요한 도구를 다루고, GA4에서 정규 표현식을 사용하는 방법에 대해 알아보겠습니다.
1. 정규식 (정규 표현식) 이란 무엇일까요?
정규식 (정규 표현식) 은 일반 문자 (예 : 문자, 숫자)와 특수 문자의 조합으로, 정규 표현식 구문에서 특별한 의미를 갖습니다.
정규 표현식을 사용하면 텍스트 문자열에서 특정 패턴이나 문자열 시퀀스를 검색할 수 있습니다.
GA4에서 가장 흔히 볼 수 있는 것은 “정규식 일치” 와 “정규식 불일치” 입니다.
“정규식 일치”는 정규식 패턴과 일치하는 데이터만 포함하고, “정규식 불일치”는 정규식 패턴과 일치하는 데이터를 제외한 모든 데이터를 포함한다는 의미입니다.
도움이 될 만한 예를 하나 들어보겠습니다. 신발과 액세서리를 판매하는 사이트가 있습니다.
각 신발에는 상세정보 페이지 (/shoes/123-112233)가 있습니다. 이 상세정보 페이지의 페이지 조회수 집계를 살펴 보고 싶습니다.
GA4의 포함 필터를 사용할 수는 있지만, 이 URL의 패턴이 “/shoes/[3자리]-[6자리]”이기 때문에 제대로 작동하지 않습니다.
“/shoes/”만 입력하면 너무 많은 페이지가 포함되고 (“/shoes/list”가 이미 존재할 수도 있음), “/shoes/123″을 사용하면 데이터가 너무 제한됩니다.
그렇다면 어떻게 해야 할까요?
이럴 때 정규식을 사용하면 됩니다.
이 예제를 살펴보기 전에 먼저 알아두어야 할 기본 구문과 패턴을 살펴보겠습니다.
2. 기본 구문 및 패턴 (예시 포함)
먼저 기본 구문을 살펴보고 나중에 GA4에서 정규 표현식을 사용할 수 있는 곳을 설명드리겠습니다.
와일드 카드
와일드 카드는 입력에 다양한 변수나 미지수를 허용하여 유연성을 제공합니다.
알아두어야 할 다섯 가지 주요 문자는 다음과 같습니다.
- ① 마침표( . ) : 모든 단일 문자와 일치합니다.
- – 예를 들어 “/sho.s/” 는 “/shops/” 또는 “/shoes/” 또는 “/shows/” 와 일치합니다.
- ② 물음표( ? ) : 이전 문자가 0번 또는 1번 반복되는 경우와 일치합니다.
- – 예를 들어 “/shoes?/” 는 “/shoes/” 또는 “/shoe/” 와 일치합니다.
- ③ 플러스 ( + ) : 이전 문자 또는 문자 그룹을 최소한 한 번 일치시킵니다.
- – 예를 들어 “/shoes+/” 는 “/shoess/” 또는 “/shoesss/” 와 일치합니다.
- ④ 별표 ( * ) : 이전 문자 또는 문자 그룹이 0회 이상 일치합니다.
- – 예를 들어 “/shoes*/” 는 “/shoe/” 또는 “/shoesss/” 와 일치합니다.
- – 가장 유용한 패턴 중 하나는 0개 이상의 문자를 나타내는 “.*” 조합입니다. 예를 들어,
- “https://www.example.com{정규식 패턴}” 을 계속 입력하는 대신
- “https://www.example.com”을 “.*”로 바꿀 수 있습니다. 이 방법은 GA4에서 매우 많이 사용됩니다.
- ⑤ 파이프 ( | ) : OR 문으로 사용됩니다.
- – 예를 들어 “(/shoes/123|/shoes/abc)” 는 “/shoes/123” 또는 “/shoes/abc” 와 일치하지만 “/shoes/a1b2c3” 와 일치하지 않습니다.
Anchors
앵커는 패턴이 일치해야 하는 텍스트 내의 위치 (예 : 문자열의 시작이나 끝) 를 지정합니다.
- ① 캐럿( ^ ) : 문자열의 시작 부분에 후속 문자가 있는 경우 일치합니다.
- – 예를 들어 “^/shoes/” 는 “/shoes/123-112233” 과 일치하지만 “website.com/shoes/123-112233” 과는 일치하지 않습니다.
- ② 달러 기호( $ ) : 문자열이 이전 문자로 끝날 때 일치합니다.
- – 예를 들어 “/shoes/$” 는 “/website.com/shoes/” 와 일치하지만 “/website.com/shoes/123” 과는 일치하지 않습니다.
Escape
“\” 문자는 후속 문자를 특수 정규식 문자가 아닌 문자 그대로 해석하려는 경우 사용됩니다.
예를 들어, “/shoes/search\?q=.*” 는 “/shoes/search?q=sneakers” 와 일치합니다.
“?” 는 이전 문자를 0번 또는 1번 일치시키는 데 사용되는 것이 아니라, 리터럴 문자로 사용됩니다.
Groups
그룹은 패턴의 일부 (단어, 구문 또는 문자 모음)를 하나의 단위로 나타낼 수 있는 컨테이너 역할을 합니다.
- ① 둥근 괄호 또는 소괄호 ( ) : 괄호 안의 문자 순서와 정확히 일치합니다.
- – 예를 들어 “(/shoes/)” 는 “/shoes/123-112233” 또는 “/womens/shoes/” 와 일치합니다.
- ② 대괄호 [ ] : 대괄호 안의 문자 순서와 일치합니다.
- – 예를 들어 “/shoes/[123]” 은 “/shoes/1” 또는 “/shoes/2” 또는 “/shoes/3” 과 일치합니다.
- ③ 하이픈 ( – ) : 대괄호 안에 순서에 상관없이 일치할 문자 범위를 만듭니다.
- – 일반적인 사용 사례 :
- • [AZ] 는 모두 대문자 알파벳 문자 입니다.
- • [az] 는 모두 소문자 알파벳 문자 입니다.
- • [0-9] 는 모두 정수 입니다.
- • [A-Za-z0-9] 는 모두 영숫자 문자 입니다.
- – [Az] 는 [A-Za-z]와 같지 않다는 점에 유의하세요.
- – 예를 들어 “/shoes/[0-9]+” 는 “/shoes/102” 또는 “/shoes/77” 과 일치합니다.
- ④ 중괄호 { } : 대괄호 안의 문자가 문자열에 몇 번 나타나야 하는지 정의합니다. 다음 세 가지 방법으로 정의할 수 있습니다.
- – { n } : 정확히 n번 발생
- • 예를 들어 “/shoes/[0-9]{1}” 은 “/shoes/1” 또는 “/shoes/7” 과 일치합니다.
- – { n, } : 최소 n번 발생
- • 예를 들어 “/shoes/[0-9]{1,}” 은 “/shoes/6” 또는 “/shoes/12” 또는 “/shoes/123456789” 와 일치합니다.
- – { n,m } : 최소 n번 발생하지만 m번을 넘지 않는 발생
- • 예를 들어 “/shoes/[0-9]{1-3}” 은 “/shoes/0” 또는 “/shoes/14” 또는 “/shoes/123” 과 일치합니다.
3. 추가 팁
몇 가지 유용한 정규 표현식 팁이 있습니다.
- ① 정규 표현식은 대소문자를 구분합니다. 즉, “/Shoes/” 와 “/shoes/” 는 다릅니다.
- “정규 표현식 일치 (대소문자 무시)” 와 같은 변형된 표현이 있을 수 있는데, 이 경우 “/Shoes/” 는 “/shoes” 와 같습니다.
- 데이터 누락을 방지하려면 이 옵션을 사용하는 것이 좋습니다.
- 또한, 대소문자 구분을 피하고 싶은 문자열 앞에 “(?i)” 를 사용할 수 있습니다.
- 예를 들어 “/(?i)shoes/” 는 “/Shoes/” 또는 “/shoes/” 와 일치합니다.
- ② 대괄호를 사용하여 표현식을 간소화 하세요. 예를 들어 “(^/shoes/$) | (^/boots/$)” 대신 “/shoes/” 또는 “/boots/” 중 하나를 일치시키려면 이들을 “^/(shoes|boots)/$” 로 결합할 수 있습니다.
- ③ regex101.com 과 같은 사이트를 사용하여 정규식 테스트를 해보시는 것을 추천드립니다.
- 한가지 주의할 점은 이 사이트에서는 GA4에 필요한 것보다 더 자주 이스케이프 문자를 사용해야 한다는 것입니다.

- ④ GA4 정규식은 “정규식 일치” 이지 “정규식 포함” 이 아닙니다. 즉, 정규식 구문이 값과 정확히 일치해야 합니다.
- 예를 들어 “/shoes/” 를 포함하는 모든 페이지에 대한 정규식을 생성한다고 가정해 보겠습니다.
- 정규식을 “/shoes/” 로만 설정하면 데이터가 전혀 없거나 제한적으로만 제공됩니다.
- URL 에 “/shoe/” 앞이나 뒤에 다른 내용이 있을 수 있으므로 “.*/shoes/.*” 표현식을 사용해야 합니다.
- ⑤ 정규 표현식은 항상 관대하기 때문에 의도치 않은 데이터가 포함될 수 있습니다.
- “.*” 의 반대 개념으로, $를 꼭 사용해야 합니다. 이렇게 하면 예상치 못한 추가 데이터가 포함되는 것을 방지할 수 있습니다.
- 예를 들어, “www.example.com/shoes” 라는 URL을 매칭하고 싶습니다. 정규식을 “.*/shoes” 로 설정하면 “…/shoes/123” 과 같은 URL도 포함됩니다.
- 올바른 패턴은 “.*/shoes$” 입니다. 그러나 GA4에서는 반대로 정규식 패턴 끝에 “$” 가 있는 것으로 가정합니다.
그럼, 이제 처음으로 돌아가서 “/shoes/[3자리]-[6자리]” 형식의 URL을 매칭하는 정규 표현식을 어떻게 만들 수 있을까요? 정답은 아래와 같습니다.
정답 : “.*/shoes/[0-9]{3}-[0-9]{6}$“
- ① .* 는 URL에서 이것보다 앞에 무엇이든 올 수 있음을 나타냅니다.
- ② /shoes/는 우리가 신발 페이지를 보고 있다는 것을 알려주는 URL의 일부입니다.
- ③ [0-9]{3}-[0-9]{6} 은 신발의 제품 ID 형식입니다.
- ④ $ 는 URL이 제품 ID 뒤에 끝난다는 것을 나타냅니다.
FAQ.
① 문자 제한 – GA4의 정규 표현식은 256자를 초과할 수 없습니다.
기본적으로 대소문자 구분 – GA4 정규 표현식은 수정하지 않는 한 기본적으로 대소문자를 구분합니다.
② 전체 일치 필수 – GA4는 전체 문자열 일치를 적용합니다.
즉, 정규 표현식은 입력 내용의 일부가 아닌 전체 문자열과 일치해야 합니다.
GA4는 정규 표현식 (정규식이라고도 함)을 지원하므로 데이터 필터, 주요 이벤트, 세그먼트, 대상 고객, 콘텐츠 그룹, 사용자 지정 채널 그룹 등에 대한 정의를 더욱 유연하게 만들 수 있습니다.