Googleアナリティクスで使える正規表現は?

Googleアナリティクス(GA4)の探索を使っていると、レポート内容をURLのパスでフィルタしたい時に条件が複雑で「先頭一致」や「完全一致」のようなシンプルな条件では指定しきれない場合があります。その時に使用するのが「正規表現」を使った一致条件です。
GA4では探索以外にも、データフィルタ、カスタムイベントの設定、カスタムチャネルグループ設定等でも正規表現を使う場合があります。

今回は、URLを正規表現でフィルタする場合に使う正規表現について解説します。


GA4を使ってアクセス解析の基本を学ぶ入門セミナーです。主要指標の意味を整理し、外部流入や回遊の分析方法を分かりやすく解説します。データの変化の理由を考えられるようになりたい方におすすめです。


目次

正規表現とは?

正規表現(Regular Expression)とは、さまざまなテキストパターンを柔軟に表現できる文字列のことです。たとえば電話番号のようにハイフンで区切られた数値を表現する場合は、正規表現で[0-9]+-[0-9]+-[0-9]+のように表すことができます。

このように、正規表現を使うと、特定の文字の繰り返した文字列など、ルールが明確に決まっている様々なパターンを表すことができます。

GA4で使える正規表現

GA4で使用する正規表現は「RE2」という構文にのみ対応しており、Googleアナリティクス以外でよく利用されている正規表現(PCRE(Perl互換の正規表現))の構文と若干異なりますが、基本的な構文は同じです。

RE2の構文表

GA4の正規表現でよく使用するメタ文字

正規表現では、「.」や「*」のように特別な意味を持つ記号(メタ文字)を組み合わせて、URLやイベント名などの文字列パターンを柔軟に指定します。
GA4では一致条件(マッチタイプ)として「正規表現に一致」「正規表現に部分的に一致」などを選べるため、まずはどのメタ文字が、どんな“広がり方”で一致範囲を変えるのかを押さえるのが近道です。

また、メタ文字を「文字そのもの」として扱いたい場合(例:URLの「?」やドメインの「.」)は、「\」を付けてエスケープします(例:\?、aaa.com)。
以下に、GA4の設定画面でも特によく登場するメタ文字を一覧にしました。

メタ文字説明
.任意の1文字を表します。「/」なども含みます。
?直前の文字が出現しないか、1回出現することを表します。
+直前の文字が1回以上出現することを表します。
*直前の文字が0回以上出現することを表します。0回以上なので出現しなくても一致します。
{n}直前の文字がn回だけ出現することを表します。
{n,}直前の文字がn回以上出現することを表します。
{n,N}直前の文字がn回~N回出現することを表します。
|OR条件を表します。
^先頭を表します。
$末尾を表します。
()括弧内の文字をグルーピングします。
[]括弧内の任意の1文字を表します。
括弧内で「-」を使うと、範囲指定ができます。
また、括弧内の先頭に「^」を置くと、否定条件になります。
\次に続く文字をメタ文字として解釈しません(エスケープ文字)。

正規表現を使ってURLに一致させる

一致条件について

GA4では一致条件(マッチタイプ)で「正規表現に一致」と「正規表現に部分的に一致」を選べることが多く、挙動が異なります。

  • 正規表現に一致:ディメンションの値“全体”がパターンに一致する必要がある(いわゆる完全一致)
  • 正規表現に部分的に一致:値の“どこか一部”がパターンに一致すればよい(部分一致)

「正規表現に一致」を選ぶ場合、/blog/配下すべてを拾うには ^/blog/.* のように末尾まで拾える形(.* など)で指定するのが定番です。

一方、「正規表現に部分的に一致」を使う場合は /blog/ のように短く書いても一致しますが、意図しない一致を避けたいときは ^/blog/ のように先頭を固定しておくと安全です。

否定条件にしたい場合は、この否定表現である「正規表現に一致しない」「正規表現に部分的に一致しない」を使います。

URLに関連するディメンションについて

GA4のディメンションにはURLに関連したものがいくつかあります。選んだディメンションによって、含まれるURL文字列の書式が変わるので、一致のさせ方にも工夫が必要になります。

「ページパスとスクリーンクラス」「ランディングページ」:/blog/のようにパス前提

「ページパス + クエリ文字列」「ランディングページ + クエリ文字列」:パスの末尾に?param=valueのようなクエリ文字列入ってくる

「ページロケーション」「ページの参照元URL」:https://から始まり、クエリ文字列も入ってくる、フルURL前提

URLに一致させる例

例えば探索でURLを特定の条件でフィルタしたい場合によく使うのは、以下のような条件だと思います。

  1. 特定の階層のみ一致
  2. いずれかの階層のみ一致
  3. 特定のページのみ一致
  4. いずれかのページのみ一致
  5. 上記の組み合わせ
  6. 上記の否定

それぞれのケースについて例を使って解説します。

※この章の例は「ページパスとスクリーンクラス」ディメンションに対して『正規表現に一致(値全体が一致)』を使う前提で解説します

1) 特定の階層のみ一致(例:/blog/配下だけ)

例:^/blog/.*

  • ^は先頭、.*は任意文字の0回以上の繰り返しです。

2) いずれかの階層のみ一致(例:/blog/または/news/)

例:^/(blog|news)/.*

  • ( )でグルーピングし、|でOR条件を作ります。

3) 特定のページのみ一致(例:/blog/regex/のみ)

例:^/blog/regex/?$

  • 末尾の/が付く・付かない両方を許容したい場合は/?を使います。

4) いずれかのページのみ一致(例:2ページだけ比較したい)

例:^/blog/(regex|ga4)/?$

  • 同じ階層配下の複数ページをまとめて指定できます。

5) 組み合わせ(例:/blog/配下で、URLにクエリが付いてもOK)

『ページパス+クエリ文字列』を対象にする場合の例:^/blog/.*(\?.*)?$

  • ?はメタ文字なので、クエリの?を表したい場合は\?とエスケープします。

6) 上記の否定(例:/admin/配下を除外したい)

この場合は正規表現側で無理に否定を作るより、マッチタイプを『正規表現に一致しない』にして、除外したいパターンを指定するのが確実です。

除外パターン例:^/(admin|wp-admin)/.*

補足:『/blog/は含むが/blog/tag/は除外』のような条件は、1つの正規表現だけで表現しようとすると先読み((?!...))が欲しくなりますが、RE2では先読みが使えません。GA4では、フィルタ条件を2つ(含む条件+除外条件)に分けるか、セグメント/オーディエンスの条件で組み合わせる運用が現実的です。

よくあるミス

  • 『正規表現に一致』を選んだのに .*を付け忘れて、意図より絞り込みが強くなる
  • ドット(.)やクエリの?をエスケープせず、想定外にマッチ範囲が広がる(例:aaa.com を探すならaaa\.com)
  • OR(|)を使う際にグルーピング(( ))をせず、思った通りに評価されない
  • 大文字小文字が区別されるため、/Blog/ /blog/ は別扱いになる(必要ならパターン側で吸収する)

まとめ

GA4で正規表現を使うと、URLパスやイベント名などを「特定の階層だけ」「複数カテゴリをまとめて」「一部を除外して」といった形で柔軟に絞り込めます。ポイントは、まず一致条件(マッチタイプ)で「一致」か「部分的に一致」かを選び、そのうえで^$.*()|などのメタ文字を使って意図した範囲になるようにパターンを組み立てることです。

また、否定条件は正規表現だけで無理に表現しようとせず、「正規表現に一致しない」「正規表現に部分的に一致しない」を使って除外パターンを指定すると運用が安定します。

最後に、?.のようなメタ文字はエスケープ漏れが原因で想定外に一致範囲が広がりやすいので、設定後は探索のフィルタ結果などで意図どおりに絞り込めているかを確認するのがおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
目次