正規表現
正規表現は、一般に「regex」として知られ、検索パターンを定義する文字のシーケンスです。正規表現では、テキストのグループ化を検証し、検索と置換を実行できます。Braze では、正規表現を活用し、ターゲットのセグメンテーションやキャンペーンのフィルタリングにおいて、より柔軟な文字列マッチングソリューションを提供します。
このページでは、正規表現(regex)、その使用方法、よくある質問、正規表現をテストするための正規表現デバッガについて説明します。
リンク先の Braze Learning コースでは、Regex101 で正規表現がどのように使用され、テストされるかを紹介しています。また、社内の正規表現テスター、役立つ参考ページ、正規表現 Braze ラーニングビデオで参照されているサンプルデータ、よくある質問も提供しています。
リソース
- 正規表現の基礎 Braze ラーニングコース
- 正規表現チートシート
- [サンプルデータ RTF][dummydata]
正規表現デバッガ
このツールはあくまで参考であり、正規表現が Braze プラットフォーム と100% 一致することを保証するものではありません。Braze のセグメンテーションおよびフィルタの正規表現では、/gi
修飾子が自動的に追加されます。gi 修飾子は、文字列中に出現する正規表現を大文字小文字を区別せずに検索するために使われます。
カスタムイベントトリガープロパティおよびトリガーフィルタの正規表現では、/g
修飾子(大文字と小文字の区別あり。g 修飾子 を参照)を使用し、/i
修飾子は使用しません。カスタムイベントトリガープロパティとトリガーフィルタの大文字と小文字を区別しない場合は、代わりに(?i)
を使用します。たとえば、Matches regex (?i)STOP(?-i)
は”STOP” の使用をキャッチします。いずれの場合も(“stop” “ please stop” および” は、メッセージ” の送信を停止しません)。
値をチェック:
一致結果:
よくある質問
does not match regex
フィルターは空白値を含みますか?
いいえ。値が空白の場合、そのユーザーは does not match regex
フィルターに含まれません。
セグメンテーションの際、受信トレイ固有のメールアドレスをフィルタリングするにはどうすればよいですか?
メールアドレスフィルターを使い、matches regex
に設定します。次に、メールアドレスの正規表現を参照します:
1
[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z.-]+
この正規表現は以下の 3 つの部分に分解できます:
[a-zA-Z0-9.+_-]+
はメールアドレスの先頭で、その後アットマーク@
が続きます。つまり、”[email protected]”の “name “である。[a-zA-Z0-9.-]+
はドメインの最初の部分です。つまり、「[email protected] 」の「例」ということになる。[a-zA-Z.-]+
はドメインの最後の部分です。つまり、「[email protected] 」の「com」である。
特定のドメインに関連するメールアドレスをフィルタリングする方法を教えてください。
例えば、”@braze.com” で終わるメールをフィルタリングしたいとする。メールアドレスフィルターを使用して matches regex
に設定し、正規表現フィールドに「@braze.com」と入力します。他のメールドメインでも同様です。
の正規表現に一致するメールアドレスのフィルタ
値 ≥x または ≤x の場合、フィルターの番号文字列はどのように使用できますか?
(≥) x 以上の値を検索する場合は、以下の正規表現を使います:
1
^([x-y]|\d{z,})$
ここで、x-y
は最初の桁の数字(0~9)の範囲であり、z
は x の桁数以上の数字です。例えば、50 以上の値の場合、正規表現は^([5-9][0-9]|\d{3,})$
になります。
(≤) x 以下の値を検索する場合は、以下の正規表現を使います:
1
^([x-y]|[a-b])$
ここで、x-y
は 1 桁目の数字(0~9)の範囲、a-b
は x の下限範囲です。たとえば、50以下の値の場合、正規表現は^([5-9][0-9]|[0-4][0-9])$
になります。
特定の文字列で始まるカスタム属性をフィルタリングするには?
キャレット記号 (^
) で文字列の先頭を表し、指定したいカスタム属性名を入力します。
例えば、”San” で始まる都市に住むユーザーをターゲットにする場合、正規表現は ^San \w
とします。この正規表現を使えば、サンフランシスコ、サンディエゴ、サンノゼなどの都市のユーザーをターゲットにできます。
の正規表現に一致する都市のフィルタ
特定の電話番号をフィルタリングする方法を教えてください。
正規表現を使用して電話番号をフィルター処理するには、ユーザープロファイルに記録されている番号が、「ユーザーの電話番号」で指定されているように、E.164 形式でなければいけません。
米国の電話番号を検索すると仮定すると、正規表現フォーマット 1?\d\d\d\d\d\d\d\d\d\d
を使用します。\d
の各繰り返しは、指定したい桁数です。最初の 3 桁は市外局番です。
同様に、英国の電話番号の書式は ^\+4\d\d\d\d\d\d\d\d\d\d\d
です。その他の国は、それぞれの国番号の後に、残りの各桁について必要な数の \d
を繰り返します。つまり、国番号が “3” のリトアニアの場合、正規表現は ^\+3\d\d\d\d\d\d\d\d\d\d
になります。
例えば、特定の市外局番 “718” の電話番号でユーザーをフィルタリングしたいとします。電話番号フィルターを使い、matches regex
に設定し、以下の正規表現を入力します:
1
^1?718\d\d\d\d\d\d\d
の正規表現に一致する電話番号のフィルタ
[dummydata] : /docs/ja/assets/download_file/regex-dummy-data.rtf?a2fce36c12fb35f03ae3b0819aca3ee8