151 正規表現の活用

一定のルールに従った文字列を正規表現で指定する

ページを表すURLやページタイトル、カスタムキャンペーンの内容を表す文字列などは、一定のルールに従って記述されていることが多いと思います。例えば、ECサイトにおける商品詳細ページのURLは、すべて「/products/detail/」を含んでいる、といったルールです。

こうした場合に、一定の条件に該当する文字列だけを対象にできるのが「正規表現」です。正規表現では特殊な意味を持つ記号が使われますが、その記号の意味と使用例は以下の通りです。

Googleアナリティクスでよく使う正規表現

記号意味使用例/記述方法
^次の文字で始まるサイト内に①「/inquiry/thanks.html」と②「/products/inquiry/thanks.html」というURLが存在するが、①だけを目標として設定したい。
^/inquey/thanks\.html
$前の文字で終わるサイト内に①「/thanks.html」と②「/thanks.html?id=123」というURLが存在するが、①だけを目標として設定したい。
/thanks\.html$
.任意の1文字「/index.html」にクエリパラメータ「uid」が付いたページだけにフィルタで絞り込みたい。クエリパラメータの値は1文字とする。
^/index\.html\?uid=.
*直前の文字の0回以上の繰り返し「/index.html」にクエリパラメータ「uid」が付いたページだけにフィルタで絞り込みたい。クエリパラメータの値は問わない(値がない場合も含む)。
^/index\.html\?uid=.*
+直前の文字の1回以上の繰り返し「/index.html」にクエリパラメータ「uid」が付いたページだけにフィルタで絞り込みたい。クエリパラメータは値がない場合は除くが、値があれば問わない。
^/index\.html\?uid=.+
[0-9]任意の数字1文字自社のIPアドレスが「123.123.123.010」から「123.123.123.019」まであり、それらすべてを内部トラフィックとして除外したい。
123\.123\.123\.01[0-9]
[a-z]任意のアルファベット1文字(小文字)キャンペーン名が「R_a_2015」、「R_b_2015」、「R_c_2015」などに一致する項目だけにフィルタで絞り込みたい。「a」「b」「c」は必ず小文字とする。
cpc|organic
|複数のアイテムのいずれかメディアが「cpc」または「organic」を含む項目だけにフィルタで絞り込みたい。
^/inquey/thanks\.html
()グループ「/tv/products/」を含むページ、または「/radio/products/」を含むページだけに絞り込みたい。
^/(tv|radio)/products/.*

ポイント

  • 上記の記述方法にある「\」は正規表現のエスケープ処理を表し、「\」の次の記号を正規表現として扱いません。例えば「\.」と記述すると、「.」は任意の1文字ではなくドットとなります。
  • 正規表現で用いられる特殊な記号は「メタ文字」とも呼ばれます。

アドバンスフィルタやセグメントを効率的に適用するには、正規表現は必須のテクニックです。