Looker Studio の正規表現

正規表現(regexp)とは、データ内のパターンに部分的または厳密に一致する、特定の文字列です。正規表現を使用して、柔軟なフィルタを作成し、グラフやコントロールで使用することができます。計算フィールドの数式では、以下の正規表現関数も使用できます。

関数説明
REGEXP_CONTAINS 入力値に正規表現のパターンが含まれる場合は true を返し、それ以外の場合は false を返します。

詳しくは、REGEXP_CONTAINS についてのページをご覧ください。
REGEXP_EXTRACT 入力値の中で、正規表現のパターンに最初に一致する部分文字列を返します。

詳しくは、REGEXP_EXTRACT についてのページをご覧ください。
REGEXP_MATCH 入力値が正規表現のパターンと一致する場合は true を返し、それ以外の場合は false を返します。

詳しくは、REGEXP_MATCH についてのページをご覧ください。
REGEXP_REPLACE 入力値の中で、正規表現のパターンに一致するテキストをすべて replacement 文字列に置き換えます。

詳しくは、REGEXP_REPLACE についてのページをご覧ください。

正規表現に代わる方法

正規表現の作成は複雑な場合があります。正規表現関数を使用する前に、単純なテキスト関数で目標を達成できるかどうか検討してください。次の関数は、正規表現と遜色なく機能します。使用するのに、正規表現の構文についての知識は必要ありません。

機能 説明
CONTAINS_TEXT

指定したテキストがフィールドや式で見つかった場合は true を返します。それ以外の場合は false を返します。

ENDS_WITH

フィールドや式が指定したテキストで終わる場合は true を返します。それ以外の場合は false を返します。

LEFT_TEXT

指定した文字列の先頭から、指定した数の文字を返します。

REPLACE 元のテキストの中の検索テキストをすべて置換テキストに置き換えたものを返します。
RIGHT_TEXT

指定された文字列の末尾から指定された数の文字を返します。

STARTS_WITH

フィールドや式が指定したテキストで始まる場合は true を返します。それ以外の場合は false を返します。

TRIM

最初と最後のスペースを削除したテキストを返します。

正規表現の例

MyField に空白文字が含まれる場合に一致します。

REGEXP_CONTAINS(MyField, "\\s+")

URL の最上位のディレクトリを抽出する場合:

REGEXP_EXTRACT(URL, ^https://[^/]+/([^/]+)/)

たとえば、URL フィールドにこのページのアドレスが含まれている場合、上記の関数は looker-studio を返します。

広告キャンペーンを言語別に分類する場合は、以下のように指定します。

CASE
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*en\s*\|.*") then "English"
    WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*es\s*\|.*") then "Spanish"
    ELSE "Other language"
END

たとえば、この正規表現を Google アナリティクス デモアカウントの「キャンペーン」ディメンションに適用すると、次のような結果が得られます。

キャンペーン 言語
キャンペーン 1 その他の言語
1000549 | Google Analytics Demo | DR | apontes | NA | US | en | Hybrid | AW SEM | BKWS | ~ AW - Google Brand (US) 英語
1000549 | Google Analytics Demo | DR | apontes | NA | CA | es | Hybrid | AW SEM | BKWS | ~ AW - YouTube (CA) スペイン語

文字列内のセクションの順序を入れ替える:

REGEXP_REPLACE(Campaign, R'(.*):(.*)', R'\2 \1')

前の例では、セクションはコロン(:)で区切られています。

メタ文字

メタ文字は、正規表現で特殊な意味を持つ文字です。ここでは、よく使用される一般的なメタ文字をいくつか紹介します。以下の例は Google アナリティクスのヘルプセンターにリンクされていますが、掲載されている情報は Looker Studio でも同様に参考にしていただけます。

ワイルドカード

文字説明
任意の 1 文字(文字、数字、記号)に一致します。 「1.」は「10」、「1A」と一致します。

「1.1」で一致するデータ: 111、1A1

を構築したいとお考えですか? 直前の文字が 0 回または 1 回出現する場合に一致します。 「10?」は 1、10 と一致します

+ 直前の文字が 1 回以上出現する場合に一致します。 「10+」で一致するデータ: 10、100

* 直前の文字が 0 回以上出現する場合に一致します。 「1*」は「1」、「10」と一致します。

| OR 一致を作成します。

式の末尾では使用しないでください。
「1|10」は 1、10 と一致します

アンカー

文字説明
^ 隣接する文字が文字列の先頭である場合に一致します。 「^10」で一致するデータ: 10 10 0、 10 x

^10 は 1 10 、1 10 x と一致しません

$ 隣接する文字が文字列の末尾である場合に一致します。 「10$」で一致するデータ: 1 10 、10 10

「10$」は「100」、「10x」と一致しません。

グループ

文字説明
( ) 囲まれた文字が同じ順序で文字列に含まれる場合に一致します。

他の式をグループ化するためにも使用されます。
「(10)」で一致するデータ: 10 10 1、 10 11

([0-9]|[a-z]) は、任意の数字または小文字の英字に一致します。

[ ] 囲まれた文字が任意の順序で文字列に含まれる場合に一致します。 [10] で一致するデータ: 01 2、 1 20、2 10

- 角かっこ内の文字範囲が文字列に含まれる場合に一致します。 「[0-9]」で一致するデータ: 0 ~ 9 のすべての数字

見逃し率

文字説明
\\

隣接する文字を正規表現のメタ文字としてではなく通常の文字として解釈するよう指定します。

「\\」と指定すると、隣接するドットがワイルドカードとしてではなく、ピリオドや小数点として解釈されます。

216\\.239\\.32\\.34 は 216.239.32.34 と一致します

文字クラス

クラス文字数
\d 数字(≡ [0-9])
\D 非数字(≡ [^0-9])
\s 空白文字(≡ [\t\n\f\r ])
\S 非空白文字(≡ [^\t\n\f\r ])
\w 単語構成文字(≡ [0-9A-Za-z_])
\W 非単語構成文字(≡ [^0-9A-Za-z_])

ヒント

シンプルな表現にする

正規表現はシンプルに作成してください。正規表現がシンプルであれば、他のユーザーが簡単に解釈して変更できます。

大文字と小文字の区別

正規表現では、デフォルトで大文字と小文字が区別されます。大文字と小文字を区別せずに一致させるには、(?i) フラグを使用します。たとえば、次の式は「abc123」と「ABC123」の両方を抽出します。

REGEXP_EXTRACT(MyField, '(?i)(a.*)')

バックスラッシュ文字のエスケープ

バックスラッシュ文字を含むフィルタ条件を作成する場合は、バックスラッシュ文字を別のバックスラッシュ文字でエスケープする必要があります。

たとえば、次の式は、フィールドに文字列 green\yellow が含まれているかどうかを確認します。

REGEXP_CONTAINS(field_name, "green\\yellow")

式に生の文字列のリテラル プレフィックス(R)を追加することもできます。この場合、バックスラッシュなどの特殊文字をエスケープする必要はありません。上記の例は、次のように書き換えることができます。

REGEXP_CONTAINS(field_name, R"green\yellow")