Braze
Braze에서 특정한 규칙을 활용하여 타겟팅하는 방법 - 정규 표현식(Regular Expression)
2023-08-10
By
Hyeongjun Kim
Braze
Braze에서 특정한 규칙을 활용하여 타겟팅하는 방법 - 정규 표현식(Regular Expression)
August 10, 2023
By
Hyeongjun Kim

효과적인 CRM을 위해서는 프로덕트를 이용하는 유저들의 속성을 고려한 세밀한 타겟팅이 중요합니다. 유저의 취향과 관심사를 바탕으로 CRM 캠페인 타겟을 설정하고 메시지를 발송하면 유저들에게 보다 개인화된 경험을 제공할 수 있습니다. 유저들은 개인화된 메시지를 통해 프로덕트에 더 많은 관심을 가지고 긍정적인 인식을 가질 수 있습니다.

브레이즈(Braze)에서는 정규 표현식(Regular Expression)을 사용하여 브레이즈에 수집된 유저 속성 데이터에서 나타나는 공통적인 특성에 따라 유저를 세그멘테이션하고 타겟팅할 수 있습니다.

이번 포스트에서는 정규 표현식의 개념과 CRM 캠페인에서 정규 표현식을 사용해야 하는 이유에 대해 소개합니다. 이어서 다양한 예시를 통해 브레이즈로 수집하는 유저 속성 데이터에 정규 표현식을 활용하여 정교하게 타겟팅하는 방법을 알아보겠습니다. 

정규 표현식 알아보기

정규 표현식이란?

정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어입니다. 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 브레이즈에서 수집하는 데이터 중에서는 Strings 형태로 수집되는 데이터에 정규 표현식을 활용할 수 있습니다.  

브레이즈에서 Numbers 형태로 수집되는 데이터의 경우 'more than', 'less than'과 같은 필터를 활용하여 타겟팅하려는 범위를 설정한다면, Strings 형태로 수집되는 데이터는 정규 표현식을 활용하여 특정 문자열을 기준으로 필터링을 할 수 있는 것입니다.

CRM 캠페인에서 정규 표현식이 필요한 경우

일반적으로 브레이즈에서는 유저의 속성 데이터를 기준으로 CRM 캠페인의 타겟 유저를 설정합니다. 세그멘테이션 필터(Segmentation Filter)를 활용하여 타겟 유저를 설정할 때, 유저들이 공통적으로 지닌 문자열 속성을 기준으로 세그먼트를 생성하고 싶다면 정규 표현식을 사용할 수 있습니다. 

예를 들어, 사용자 이름에서 성이 '최'씨인 유저만을 필터링하고 싶을 때 정규 표현식을 활용하면 보다 쉽게 타겟 유저 세그먼트를 생성할 수 있습니다. ‘@gmail.com’ 도메인의 메일 주소를 사용하지 않는 유저들만을 타겟팅하고 싶은 경우에도 정규 표현식을 활용하면 간편하게 세그먼트를 생성할 수 있습니다. 

이처럼 정규 표현식을 활용하면  여러 개의 세그멘테이션 필터를 사용하지 않고도 CRM 캠페인의 타겟 세그먼트를 보다 유연하게 생성할 수 있습니다. 

다음으로는 유저 타겟팅에 주로 쓰이는 정규 표현식의 기본 문법을 알아보겠습니다.

정규 표현식 기본 문법

브레이즈에서 자주 사용되는 정규 표현식 문법은 아래와 같습니다. 

  • ^X : 문자열의 시작을 표현하며 문자 'X'로 시작됨을 의미합니다. 문자열의 중간에 위치하거나 끝에 위치하는  문자 ‘X’는 찾지 않습니다.
    ex) ^A : Airbridge, Apple, Autumn
  • X$ : 문자열의 종료를 표현하며 문자 'X'로 종료됨을 의미합니다.
    ex) 밥$ : 쌀밥, 잡곡밥, 현미밥
  • X? : 존재여부를 표현하며 ?앞의 문자 'X'가 존재할 수도, 존재하지 않을 수도 있음을 의미합니다.
    ex) ab? : ab,ac, abc, active, mall 
  • X(?!Y): 문자 ‘Y’가 문자 'X'뒤에 나오지 않는 문자열을 찾습니다. ‘Negative Lookahead’라고 합니다.
    ex) a(?!b):  ac, ad, ak, apple
  • .X : 문자 'X'앞에 문자가 있음을 의미합니다. 문자열 중간에 위치하는 문자 ‘X’도 찾을 수 있습니다. 문자 ‘X’로 시작하는 문자는 의미하지 않습니다.
    ex) .t : elite, unit, delete, light, alt, little
  • X|Y : 'OR'를 의미하여, X 또는 Y 문자가 존재함을 의미합니다.
    ex) 사과|배 : 사과 또는 배를 매칭
  • [abc] : a, b, c 중 하나라도 포함하는 값을 찾을 수 있습니다. 
  • [a-z] : 알파벳 소문자 a부터 z 중 하나라도 포함하는 값을 찾을 수 있습니다.
  • [A-Z] : 알파벳 대문자 A부터 Z 중 하나라도 포함하는 값을 찾을 수 있습니다.
  • [^a-z] :  알파벳 소문자 a부터 z 중 어느 하나도 포함하지 않는 값을 찾을 수 있습니다.
  • [^A-Z] :  알파벳 소문자 A부터 Z 중 어느 하나도 포함하지 않는 값을 찾을 수 있습니다. 
  • [0-9] :  숫자 0부터 9 중 하나라도 포함하고 있는 값을 찾을 수 있습니다.
  • [^0-9] : 숫자 0 부터 9 중 어느 하나도 포함하지 않는 값을 찾을 수 있습니다. 
  • \d : 숫자인 값을 찾을 수 있습니다. [0-9]와 동일한 표현식입니다.
  • \D : 숫자가 아닌 값을 찾을 수 있습니다. [^0-9]와 동일한 표현식입니다.
  • {n} : 특정 문자 패턴이 정확히 n번 반복됨을 의미합니다. 예를 들어 '[a-z]{n}'은 영어 알파벳으로 이루어진 문자가 n번 반복되는 값, 즉 n개의 영어 알파벳으로 이루어진 문자열을 의미합니다.
    ex) [a-z]{3}: aaa, asd, cat
    ex) [0-9]{3}: 123, 000, 002
  • {n} : 문자가 정확히 n번 반복되는 패턴을 찾습니다.
    ex) \d{3} : 123, 888, 143, 000
  • {n,} : 문자가 n번 이상 반복되는 패턴을 찾습니다.
    ex) \d{3,} : 123, 1245, 00000, 00023
  • {,m} : 문자가 m번 이하 반복되는 패턴을 찾습니다.
    ex) \d{,3} : 1, 22, 333
  • {n,m} : 문자가 n번 이상 m번 이하 반복되는 패턴을 찾습니다.
    ex) \d{3,4} : 123, 1234
  • \w : 알파벳 또는 숫자로 이루어진 값을 찾을 수 있습니다.
    ex) abc, abc123, 123
  • \W : 알파벳이나 숫자가 아닌 다른 문자를 포함하거나, 알파벳이나 숫자를 포함하며 다른 문자로 구성된 값을 찾을 수 있습니다.
    ex) 한글, 홍길동123, abc홍길동
유의사항

브레이즈에서는 'Custom Event Trigger Properties'에서 활용되는 정규표현식 [A-Z]와 [a-z]에 대해서만 알파벳 대소문자를 구분합니다. 그 외 세그멘테이션 필터 등에서 [A-Z]와 [a-z]를 사용하는 경우, 대소문자 구분 없이 알파벳을 인식하는 점 유의해주세요.

정규 표현식 사용 예시 알아보기

지금까지 정규 표현식의 의미와 기본적인 문법을 살펴보았습니다. 

다음으로 정규 표현식을 활용하여 유저를 타겟팅하는 방법을 이커머스, 반려동물, 서비스 중개, 여행 등 다양한 플랫폼별 예시를 통해 알아보겠습니다.  

이커머스 플랫폼 

Arrays 형식의 커스텀 어트리뷰트(Custom Attribute)로 고객의 선호 브랜드(favorite_brands)를 수집하고 있는 이커머스 서비스에서, 일부 유저들의 선호 브랜드 데이터가 다음과 같다고 가정해보겠습니다.

예시 로우 데이터: 유저의 선호 브랜드(favorite_brands)를 수집하는 커스텀 어트리뷰트

유저 A

  • favorite_ brands: 나이키, 아디다스, 푸마, 반스, 컨버스, 샤넬, 프라다, COS, 셀린느, 리복

유저 B

  • favorite_ brands: 나이키, 아디다스, 푸마, 반스, 컨버스, 샤넬, 프라다, COS, 구찌, FENDI

유저 C

  • favorite_ brands: 아디다스, 푸마, 반스, 컨버스, 샤넬, 구찌, 프라다, COS

위 예시에서 '나이키' 또는 ‘FENDI’를 선호 브랜드로 설정한 유저만을 세그먼트로 만들어 보겠습니다. 

우선 'Custom Attributes' 세그멘테이션 필터에서 'favorite_brands' 어트리뷰트를 선택한 후 연산자를 'matches regex'로 설정합니다. 다음으로 'OR'을 의미하는 '|'을 활용하여 "나이키|FENDI"로 입력합니다. 따라서 나이키 또는 FENDI 브랜드를 선호 브랜드로 설정한 유저 A와 유저 B가 세그먼트에 포함됩니다. 

반려동물 플랫폼

유저가 키우는 반려동물 정보(mypets)를 Array of Objects 형식의 커스텀 어트리뷰트로 수집하고 있는 반려동물 서비스의 일부 유저 데이터가 아래와 같다고 가정해봅시다. 

예시 로우 데이터: 유저의 반려동물 정보(mypets)를 수집하는 커스텀 어트리뷰트

유저 A


유저 B


유저 C


유저 D

위의 예시 로우 데이터에서 반려동물 중 개(dog) 또는 고양이(cat)를 키우지 않는 유저를 캠페인의 타겟으로 설정해 보겠습니다.

우선 ‘Nested Custom Attributes’ 필터에서 'mypets' 어트리뷰트를 선택한 후 '+' 버튼을 클릭하여 반려동물의 종을 나타내는 'type' 및 'does not match regex' 연산자를 설정합니다. 그 다음 정규 표현식 문법에서 'OR'를 나타내는 '|'을 활용하여 "dog|cat"을 입력합니다. 강아지나 고양이를 키우지 않는 유저 D가 세그먼트에 포함됩니다.

다음으로 위의 데이터에서 'mypets'의 id 숫자 코드 중 일의 자리가 반려동물의 크기에 따른 구분을 나타낸다고 할 때, id에 정규 표현식을 활용하여 대형견 또는 대형묘를 키우는 유저만을 세그먼트로 설정해보겠습니다.(일의 자리가 '1'이면 소형, '2'이면 중형, '3'이면 대형에 속합니다)  우선 ‘Nested Custom Attributes’ 필터에서 ‘mypets’ 어트리뷰트를 선택한 후 '+' 버튼을 클릭하여 'id' 및 'matches regex' 연산자를 설정합니다. 그 다음 정규 표현식 문법에서 id가 'dog' 또는 'cat'으로 시작하고, 언더바(‘_’) 이후 세 자리 숫자의 마지막  일의 자리 수가 ‘3’인 값을 찾기 위해 ‘^(dog|cat)_\d{2}3$’으로 입력합니다.

정규 표현식 '^(dog|cat)_\d{2}3$' 의미를 조금 더 자세히 살펴보면 아래와 같습니다.

  • ^ :문자열의 시작을 의미합니다.
  • (dog|cat) : 문자열에 ‘dog’ 또는 ‘cat’ 문자가 존재함을 의미합니다. 문자열의 시작을 의미하는 '^'와 함께 사용 시,  ^(dog|cat)은 문자열이 'dog' 또는 'cat'으로 시작함을 의미합니다.
  • _ : 언더스코어(_) 문자와 일치합니다. 문자열에서 '_' 문자가 나와야 합니다.
  • \d{2} : \d는 숫자를 나타내고, {2}는 앞의 패턴이 정확히 2번 반복되어야 함을 의미합니다. 즉, 두 자리 숫자와 일치해야 합니다.
  • 3 : 문자 '3'과 일치합니다.
  • $ : 문자열의 종료를 표현합니다.

따라서, 위의 정규 표현식으로 세그먼트 설정 시 대형견 또는 대형묘를 키우는 유저 A(나비), 유저 B(별이) 그리고 유저 C(루크, 듀크)가 세그먼트에 속하게 됩니다.

참고사항

Strings, Arrays, Array of Objects 등 커스텀 어트리뷰트의 다양한 데이터 타입에 대해 더 알고 싶다면 아래 포스트를 참고해 주세요. 
 👉 데이터 타입별 유저 세그멘테이션을 통해 개인화된 CRM 캠페인 설계하기

서비스 중개 플랫폼

유저가 특정 행동을 수행했을 때 메시지를 전송하는 메시지 전송 방식(Delivery Types)인 Action-based 방식으로 캠페인 운영 시, 트리거 액션으로 설정한 커스텀 이벤트(Custom Event)의 이벤트 프로퍼티(Custom Event Properties) 문자열 조건에 따라 정규 표현식을 활용할 수 있습니다. 

유저들이 과외나 레슨 등 생활 서비스를 거래할 수 있도록 도와주는 서비스 중개 플랫폼에서, 유저가 서비스를 구매했을 때 서비스 구매완료(purchase_service_complete) 이벤트와 함께 서비스명(service_name), 서비스 ID(service_id)와 같은 서비스 정보가 구매 이벤트의 이벤트 프로퍼티로 수집된다고 가정해보겠습니다.

예시 로우 데이터: 서비스 구매 이벤트(purchase_service_complete) 및 이벤트 프로퍼티(service_name, service_id)

유저 A

Event : purchase_service_complete

Event Properties:

  • service_name:  영어과외
  • service_id: EN001

유저 B

Event : purchase_service_complete

Event Properties:

  • service_name:  쿠킹수업
  • service_id: CK042

유저 C

Event : purchase_service_complete

Event Properties:

  • service_name:  수영레슨
  • service_id: SW002

유저 D

Event : purchase_service_complete

Event Properties:

  • service_name:  일어과외
  • service_id: JP948

서비스 구매 완료 이벤트의 프로퍼티인 'service_name'에 정규 표현식을 활용하여, 특정한 문자가 포함된 서비스 구매가 일어났을 때 캠페인이 발송되게 할 수 있습니다.

'service_name'에 정규 표현식을 활용하여, 특정한 문자가 포함된 서비스 구매가 일어났을 때 캠페인이 발송되게 할 수 있습니다.

'과외'라는 문자가 포함된 서비스 구매가 일어났을 때를 캠페인 발송 시점으로 설정하고자 한다면 다음과 같이 설정할 수 있습니다. 

먼저 캠페인 생성 시 'Schedule Delivery' 단계에서 'Action-Based'를 선택한 뒤 트리거 액션에 'Perform Custom Event' 및 'Add Trigger'를 선택해서 원하는 이벤트(여기서는 purchase_service_complete)를 선택합니다. 

다음으로 'Add property filter'를 선택한 뒤 캠페인 발송의 상세 트리거로 사용하고 싶은 이벤트 프로퍼티(여기서는 service_name)을 선택합니다. 'matches regex' 연산자를 설정한 뒤 문자열의 종료를 표현하는 '$'을 활용하여 "과외$"를 입력하면 '과외'로 끝나는 서비스명을 지닌 이벤트가 발생했을 때 메시지가 발송됩니다. 예시에서는 유저 A와 유저 D가 각각 '영어과외'와 '일어과외' 서비스를 구매하여 구매 이벤트가 수집되는 시점에 메시지가 발송됩니다.

여행 플랫폼

여행 플랫폼에서 유저가 예약한 항공편명(flight_num)을 커스텀 어트리뷰트로 수집하고 있다고 가정해 보겠습니다.

예시 로우 데이터: 유저가 예약한 항공편명(flight_num)을 수집하는 커스텀 어트리뷰트

유저 A

  • flight_num : OZ114

유저 B

  • flight_num : KE708

유저 C

  • flight_num : VJ212

유저 D

  • flight_num : KE1142

유저 E

  • flight_num : OZ1801

'KE'로 시작하는 항공편을 이용하는 유저를 대상으로 세그먼트를 생성하려 한다면, ‘Custom Attributes’ 필터에서 ‘flight_num’ 어트리뷰트 및 ‘matches regex’ 연산자 선택 후 문자열의 시작을 표현하는 정규 표현식 문법인 '^' 을 활용하여 "^KE"를 입력하면 됩니다. 위 예시 로우 데이터에서는 유저 B와 D가 타겟에 해당합니다.

다음은 정규 표현식을 활용하여 국제선을 이용하는 유저를 세그먼트로 생성하는 예시를 알아보겠습니다. 항공편은 항공편명의 영문 뒤 숫자 자리수에 따라 국내선과 국제선으로 구분되는데, 국제선은 001~999, 국내선은 1001~1999 사이의 숫자를 사용합니다. 

먼저 'Custom Attributes' 필터에서 'flight_num' 어트리뷰트 및 'matches regex' 연산자 선택 후, 두 개의 알파벳으로 시작하며  001에서 999 사이의 세 자리 숫자로 끝나는 문자를 의미하는 정규표현식 '^[A-Z]{2}(?!000)\d{3}$'를 입력하면 됩니다. 

위 정규 표현식을 문법 요소별로 살펴보면 아래와 같습니다. 

  • ^ : 문자열의 시작을 의미합니다.
  • [A-Z]{2} : 두 개의 알파벳으로 이루어진 문자열을 의미합니다.
  • (?!000) : Negative Lookahead로, '000'이 포함된 문자열은 찾지 않습니다.
  • \d{3}: 0부터 9까지의 숫자가 3번 반복되는 숫자를 찾습니다. 즉, 000부터 999까지의 세 자리 숫자를 의미합니다.
  • $ : 문자열의 종료를 표현합니다.

따라서 위의 정규 표현식을 사용하면 두 개의 연속된 영어 알파벳으로 시작하며 001에서 999 사이의 숫자로 끝나는 문자열을 찾을 수 있습니다. 이처럼 세그먼트 설정 시 유저 A(OZ114), 유저 B(KE708) 그리고 유저 C(VJ212)가 국제선을 이용하는 승객임을 알 수 있습니다.

유의사항

브레이즈에서는 'Custom Event Trigger Properties'에서 활용되는 정규표현식 [A-Z]와 [a-z]에 대해서만 알파벳 대소문자를 구분합니다. 그 외 세그멘테이션 필터 등에서 [A-Z]와 [a-z]를 사용하는 경우, 대소문자 구분 없이 알파벳을 인식하는 점 유의해주세요.

지금까지 다양한 서비스 예시를 들어 정규 표현식을 사용하여 유저를 세밀하게 타겟팅하는 방법을 알아보았습니다. 

다음으로 브레이즈로 이메일을 캠페인을 운영할 때, 정규 표현식을 사용하여 특정 도메인의 이메일 주소에만 이메일을 발송하거나 발송을 제한하는 방법을 소개합니다.  

특정 도메인의 이메일 주소 대상으로 이메일 캠페인 운영하기

정규 표현식을 사용하면 특정 도메인의 이메일 주소에만 이메일을 발송하거나 발송을 제한할 수 있습니다. 예를 들어 이메일 발송 시 회사 계정으로 서비스에 가입한 사내 인원을 제외하고자 할 때 정규 표현식을 활용할 수 있습니다. 

사내 인원이 '@ab180.co'이라는 도메인의 이메일 주소를 사용한다면, 캠페인 타겟 설정 시 ‘Email Address’라는 세그멘테이션 필터의 'does not match regex' 연산자를 선택 후 "@ab180.co$"와 같이 입력하여  사내 인원을 이메일 캠페인 타겟에서 제외시킬 수 있습니다. 

마무리하며

지금까지 다양한 예시를 통해 세그멘테이션 필터에 정규 표현식을 사용하여 유저 세그먼트를 생성하고 CRM 캠페인의 타겟으로 설정하는 방법을 알아보았습니다. 

정규 표현식을 사용하면 하나의 필터에 다양한 조건을 적용하여 유저를 세밀하게 타겟팅할 수 있습니다. 정규 표현식을 적극적으로 활용해서 다양한 속성 데이터를 가진 유저들에게 개인화된 경험을 제공할 수 있는 CRM 캠페인을 운영해 보세요.

Hyeongjun Kim
Customer Success Manager
더 알아보기
쏘카, "구매 전환율이 높은 충성 고객과 수익 규모를 키우려면 CRM을 잘 해야 해요"
카셰어링 서비스 쏘카의 CRM 전략 및 효율적인 마케팅 자동화와 관련한 인사이트와 다양한 사례를 알아보세요.
성공 사례 보러가기
딜라이트룸, “글로벌 1위 알람 앱의 데이터 기반 마케팅 & 프로덕트 전략”
전세계 1위 알람 앱 '알라미'를 서비스하는 딜라이트룸을 인터뷰했습니다. 딜라이트룸이 어떻게 데이터 기반으로 똑똑하게 일하고 있는지, 마테크 솔루션을 프로덕트 개발에 어떻게 활용하고 있는지 자세한 이야기를 들어보았습니다.
성공 사례 보러가기
15,000명 이상의 업계 관계자들이 구독하고 있는 뉴스레터를 통해 업계 최신 트렌드를 가장 먼저 만나보세요.
응답이 제출되었습니다. 감사합니다.
잘못된 메일주소입니다.
주식회사 에이비일팔공
서울특별시 서초구 강남대로 61길 17, 3층, 4층 (서초동)
사업자등록번호: 550-88-00196
대표이사: 남성필
Copyright ⓒ 2023 AB180 Inc. All Rights Reserved.
개인정보 처리방침