세분화에서 RegEx 매칭 사용
정규식 매칭이란 무엇인가요?
정규식 매칭을 사용하면 정확한 값이 아니라 텍스트 패턴을 기준으로 프로필을 필터링할 수 있어요. 이 기능은 특정 도메인의 이메일 주소나 특정 형식의 전화번호처럼, 특정 형식을 따르는 프로필을 찾는 데 유용해요.
⚠️ 중요: 정규식은 항상 시작부터 끝까지 전체 값을 매칭해요.
정규 표현식 사용 방법
세그먼트를 만들 때 정규식 연산자 2가지를 사용할 수 있어요:
- 정규식과 일치 - 값이 정규식과 일치하는 프로필을 포함해요
- 정규식과 일치하지 않음 - 값이 정규식과 일치하지 않는 프로필을 포함해요
다음 세그먼트 조건에서 사용할 수 있어요:
- 누군가에 대한 속성(맞춤 객체 포함)
2. “누군가가 수행했거나 수행하지 않았던 작업” 및 “누군가가 특정 순서로 수행한 단계”에 대한 필터
정규식 기본
일치하는 문자
- 문자 및 숫자 - 일반적으로 입력: hello는 "hello"와 일치해요
- 모든 숫자 - \d를 사용해 0-9의 모든 숫자와 일치시킵니다
- 모든 문자 - 소문자는 [a-z], 대문자는 [A-Z], 둘 다는 [a-zA-Z]를 사용하세요.
- 둘 중 하나 - 옵션을 일치시키려면 |를 사용하세요. gmail|yahoo는 "gmail" 또는 "yahoo" 중 하나와 일치해요.
- 무엇이든 - .*를 사용해 모든 문자와 일치
특수 문자
다음 항목을 문자 그대로 일치시키려면 앞에 백슬래시 \를 추가해 주세요:
- 마침표: \\.는 마침표에 매칭돼요.
- 플러스 기호: \+는 플러스 기호와 일치해요
- 괄호: \( 및 \) 는 괄호와 일치해요
반복 패턴
- {5} - 정확히 5번(예: \d{5}는 숫자 5자리에 일치해요)
- {2,4} - 2~4배
- ? - 선택 사항(0회 또는 1회)
참고: 반복 패턴은 최대 1,000회까지만 반복할 수 있어요.
일반적인 예시
이메일 주소
- 특정 도메인:
- .*@example\.com
- 일치: john@example.com, support@example.com
- 여러 도메인:
- .*@(gmail|yahoo|hotmail)\.com
- 일치: user@gmail.com, user@yahoo.com, user@hotmail.com
- 모든 .com 이메일:
- .*@.*\.com
전화번호
- 10자리 미국 번호
- \d{10}
- 일치: 5551234567
- 괄호로 형식 지정됨:
- \(\d{3}\) \d{3}-\d{4}
- 일치하는 항목: (555) 123-4567
우편 번호
- 5자리 ZIP:
- \d{5}
- 일치: 12,345
- ZIP+4:
- \d{5}-\d{4}
- 일치 항목: 12345-6789
고급 참고 자료: 구현에서는 Google RE2를 표준으로 사용해요. 여기에서 자세히 알아보세요.
RegEx 제한
제한 | 값 | 예시 |
정규식 길이 | 최대 1,000자 | - |
정규식 줄 | 최대 100줄 | - |
반복 | 최대 1,000회 반복 | \d{1000} 허용됨 |
옵션(|) | 메인 수준에서 최대 5개 | a|b|c|d|e|f가 한도(옵션 6개)를 초과했어요. |
중첩 깊이 | 최대 5개 수준 | ((((a))))은 4단계이며, 허용됩니다. |
또한, 현재는 다음 기능이 지원되지 않아요.
기능 | 예시 |
룩어헤드/룩비하인드 | (?=...), (?!...), (?<=...), (?<!...) |
역참조 | \1, \2, (\w+)\s+\1 |
유니코드 이스케이프 | \uXXXX, \u00A0 |
중첩 수량자 | (a+)+, (x*)*, (a{2,5})+ |
성공을 위한 팁
1. 정규식이 전체 값과 일치합니다.
정규식은 값의 일부가 아니라 전체 값을 설명해야 해요.
잘못된 예: gmail\.com (텍스트 "gmail.com"만 일치)
오른쪽: .*@gmail\.com (john@gmail.com처럼 전체 이메일과 일치)
2. 항상 마침표를 이스케이프하세요
.com을 일치시킬 때는 .net, 등은 백슬래시를 사용해 \.com처럼 작성해 주세요.
잘못됨: @gmail.com(마침표는 모든 문자와 일치함)
오른쪽: @gmail\.com (리터럴 마침표와 일치)
3. .* 사용 "무엇이든"에 대해
.*로 모든 문자를 매칭
- .*@company\.com - company.com의 모든 이메일
- \+.* - +로 시작하는 모든 항목
- .*urgent.* - "urgent"가 포함된 텍스트
4. 간단하게 시작한 다음 다듬어 보세요
기본적인 정규식으로 시작한 다음, 세부 사항을 조금씩 추가해 주세요.
- 예: .*@gmail\.com → [a-z]+\.[a-z]+@gmail\.com
가능한 경우 복잡한 로직을 여러 개의 간단한 필터로 분할해 주세요.
- "캘리포니아에서 발송된 Gmail 또는 Yahoo 이메일"의 예:
- 필터 1: 이메일이 정규식 .*@(gmail|yahoo)\.com과(와) 일치함
- 필터 2: 주가 캘리포니아와 같음
5. RegEx는 기본적으로 대소문자를 구분해요.
문을 대/소문자를 구분하지 않도록 하려면 접두사로 (?i)을(를) 추가할 수 있어요.
- 제품이 (?i)^iphone$와(과) 일치함
RegEx와 Standard 연산자 중 언제 사용해야 하나요?
특정 형식이나 패턴을 일치시켜야 할 때는 정규식을 사용하세요. 더 간단한 요구 사항을 위해서는 대신 표준 연산자를 사용하는 것이 좋습니다.
- 포함 - 텍스트가 어디에나 표시됨
- -로 시작함: 시작 부분과 일치
- -로 끝남 - 끝부분과 일치
- 같음-정확히 일치