先日、a2iさんの「ビジネス Google アナリティクス基礎講座 第2回 2018/12/14 (金)」というセミナーでお話しする機会をいただきました。
その際、質疑応答の時間で「正規表現が難しいのですがどうやって勉強したらいいですか?」というご質問をいただいたのですが、(必要に駆られて覚えたからなぁ…なんて答えればいいんだろう)と悩んでしまったので、改めて正規表現について考えてみました。
この記事では、
- 正規表現ってよく分からない
- Google Analyticsのレポート作成時に複雑なセグメントを作ったりしている、してみたい
といった方を対象に、そもそも正規表現とはどんなもので、またGAではどんな活用ができるのかについて書かせていただきたいと思います。
正規表現とは?
そもそも、正規表現とはどういったものかを考えていくにあたり、以下のような例を用意してみました。
例:
- ブログサイトを作成し、GAを設定
- 毎月1日に同じテーマの内容を上げていて、過去1年分の"1日"に書いた記事の各PV数を調べられるようセグメント(絞り込み)をしたいと考えた
- [行動] > [サイト コンテンツ] > [すべてのページ] レポートを開き、「ページ」、「ページ タイトル」ディメンションを表示し、以下のようなフィルタ設定を行った
AND条件…抽出できない…しかも設定が面倒。。
標準で用意されているレポートでダメなら、[カスタム] > [カスタム レポート] ならいけるのでは!?と考えたとしても……
やっぱりできない。
今回のように、条件指定が増えれば増えるほど、フィルタでどうこうするというのは難しくなってきます。
ですが、WEBサイトによっては複数ドメインを1つのプロパティで計測していたり、いくつかの条件に一致するデータのみを抽出したい場合等はよくあるケースかと思います。
こんな時、正規表現を使うとディメンション毎に1行で条件指定をすることができます。
例えば、今回もともと考えていた方法は
ページタイトル 含む 1月分
OR
ページタイトル 含む 2月分
OR
ページタイトル 含む 3月分
・
・
・
だったと思います。
ですが、実際に設定できたのはORの部分がANDとなってしまい、「全ての条件に一致したデータしか抽出がされない」=抽出結果0になってしまいます。
これを正しく抽出するには、正規表現が必要です。
ページタイトル 正規表現一致 1月|2月|3月|4月|5月|6月|7月|8月|9月|10月|11月|12月
ここでいう、各月をつなぐ「|」はORを意味します。
この記号を使うことにより、想定通り、「毎月1日に上げた記事12ヶ月分」を抽出することができます。
※ちなみにですが、一致タイプを正規表現にした時にそのまま文字列を入力すると一致タイプが「含む」の時と同じ使い方ができます
GAで正規表現が使える箇所は?
主に使われるのは、以下のようなデータの絞り込みに関する機能です。
・ビューのフィルタ
・レポートのフィルタ
・カスタムセグメント
・チャネルグループ
また、GAのデータをデータポータル(データスタジオ)で利用する場合、データポータル側で独自に作成できるカスタムフィールドというものがあり、この機能やデータポータル上のフィルタ機能等でも利用可能です。
あわせてオプティマイズやタグマネージャ(GTM)のトリガー設定等でも利用可能です。
こう書き出してみると、使えるケースが多いことが分かりますね。
正規表現にはどんなものがあるのか
では実際にどういった使い方ができるのかのご紹介をさせていただきます。
ただ、記述方法の種類は多く、全部を覚えようとすると負担なので、個人的にGAで使いやすいなと思っているものに絞ってまずはご紹介します。
^
意味:先頭一致
使い方:
・先頭一致で条件指定をしたい場合
(下記はGoogleが提供するデモアカウントで試しています)
パターン数が多い高基数ディメンションの値を抽出したい時等に使えます。
$
意味:後方一致
使い方:
・後方一致で条件指定をしたい場合
「^」の逆Verですね。
「html$」っていう使い方は実際あんまりないと思いますが、「^/$」のように先頭一致の「^」と組み合わせることで完全一致で検索したい時等に使えます。
|
意味:OR
使い方:
・いくつか指定した条件の中のいずれかに一致したデータを抽出する場合
「参照元 / メディア」」ディメンション等で、いくつかのデータのみを抽出したい時等に使えます。
ちなみにですが、「AAA|BBB」の形式で設定しただけでは部分一致で検索されます。
完全一致とORを併用したい場合は、後述の「^」「$」もあわせてご利用ください。
()
意味:グルーピング
使い方:
・(AAA|BBB)CCC とし、部分的にORを含んだ条件を指定して抽出をしたい場合
特定のディレクトリのみ、または複数ドメインを計測していたりしていくつかのサブドメデータを絞り込みたい時等に使ったりしています。
.*
意味:どんな文字列でも一致とみなす(「.」が任意の一文字、「*」が直前にある文字の0回以上の繰り返しを意味し、セットで使うことで任意の一文字∞=どんな文字列でも一致、となります)
使い方:
・ビューフィルタでディメンションにオーバーライドをしたい場合
ビューのフィルタでは、ある特定の値を別ディメンション(代表的なものはカスタムディメンション)に書き込んだり、クロスドメイン計測時には「ページ」ディメンションにドメインが含まれるように設定しどのURLのデータなのかを識別できるようにする、といったことが可能です。
上記キャプチャの設定を行うと、「ページ」ディメンションにはドメインも含めたURLが格納されるようになります。
クロスドメインで使われることが多いですが、スパムをはじめとした想定外の不正データが含まれていないかどうかのチェックにも利用できます。
ビューフィルタでは正規表現を使わないとなかなか活用が難しい面があり、特に「|」「 ()」「.*」を使うケースは非常に多いのでぜひ覚えておきたいところです。
\(半角¥)
意味:正規表現で使われる記号を通常の文字列とみなす
使い方:
・?や+を文字列として検索したい場合
ご紹介したもの以外に、「?」「+」等も正規表現の記号として存在しており、GAで一致タイプを正規表現にした時にこれらを文字列として検索するには、「\?」「\+」のように直前に「\」を付与する必要があります。
例えば、Googleのデモアカウントでは「ページ」ディメンションに「+」が頻繁に使われており、「+」が含まれるデータのみを抽出したいと考えて、
ページ 正規表現に一致 +
としても、エラーとなってしまいます。
ですので、この場合は正規表現ではなく「+」として認識されるように「\+」と記述する必要があります。
どんな時にエスケープしなければいけないのかを判断するには正規表現を全て覚えるしかないのですが、それはなかなか大変なので、アルファベットや数字ではなく記号を指定したい時にはその都度調べていただくのが良いのではと思います。
ご紹介した6つをまとめますとこんな感じ↓
記号 | 意味 | 使い方 |
---|---|---|
^ | 先頭一致 | ・先頭一致で条件指定をしたい場合 |
$ | 後方一致 | ・後方一致で条件指定をしたい場合 |
| | OR | ・いくつか指定した条件の中のいずれかに一致したデータを抽出する場合 |
() | グルーピング |
・(AAA|BBB)CCC とし、部分的にORを含んだ条件を指定して抽出をしたい場合 |
.* | どんな文字列でも一致 |
・ビューフィルタでディメンションにオーバーライドをしたい場合 |
\(半角¥) | 正規表現の記号を文字列として認識 | ・?や+を文字列として検索したい場合 |
練習問題
上記でご紹介した6つの正規表現の書き方を使って、以下のようなデータを抽出する場合にはどうしたらいいでしょうか?
※色々な書き方がありますので、ここに載せる答えは一例です。結果的に抽出できればどんな書き方でもOKです
①イベントカテゴリがTwitterとなっているデータのみ抽出したい
イベントカテゴリ 正規表現一致 「????????」
②サブドメインのデータ(ドメイン:hoge.com)のみ抽出したい
ページ 正規表現一致 「????????」
③google.comとgoogle.co.jpのデータのみ抽出したい
ページ 正規表現一致 「????????」
正規表現の勉強方法
どう覚えたらいいか、ですが、とにかく使ってみる!しかないかなと思います。
特に最後にご紹介した「\」は正にそうで、使ってみないと「こういう時には『\』で書くんだな」という感覚が掴みにくいかなと。。
ですので、覚える際には、一旦レポートで絞り込みを行う際の一致タイプを正規表現縛りにしてみる、のが良いと思います。
ある程度慣れてきたら、無理に正規表現を使わなくてもいいと思います。適材適所です。
覚えたらもっと便利な正規表現
ある程度使い方に慣れてきたという方に強いて言えばでおすすめしたいのが「[]」です。
半角カッコの「[]」 は、「[]」のいずれかの文字列に一致するという条件指定ができます。
以前、カスタムディメンションを使って日時情報を取得する方法をご紹介したのですが、
カスタムディメンションは「日付」ディメンション等とは違い、「ページ」ディメンションと同じで文字列検索です。
上記の場合、GA上ではレポートの集計期間を変更してしまえばいいですが、例えばカスタムディメンションに記事の公開日を入れている場合は集計期間の変更では絞り込みができないので正規表現で書く必要があります。
2018/01/01~2018/01/20を指定する場合(YYYY/MM/DD):
カスタムディメンション 正規表現一致 2018/01/(0[1-9]|1[0-9]|20)
[1-9] や [0-9] という指定をすると、その範囲内の値で検索されます。
同じ原理で[a-z] [A-Z]もあります。
まとめ
いかがでしたでしょうか。
GAはじめ解析ツールではセグメントを正しく扱えるかが非常に重要で、正規表現は良いアシストをしてくれます。
慣れるまでは難しく感じると思いますが、仕組みが分かればあとは応用しやすいです。
ぜひ色々お試しください。
ブログ継続のためにご支援してもらえると嬉しいです!
Rayのほしいものリスト