通知

This Help Center is moving to Cloud. Learn more.

Looker Studio の正規表現

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

REGEXP_CONTAINS 入力値に正規表現のパターンが含まれる場合は true を返し、それ以外の場合は false を返します。
詳細
REGEXP_EXTRACT 入力値の中で、正規表現のパターンに最初に一致する部分文字列を返します。
詳細
REGEXP_MATCH 入力値が正規表現のパターンと一致する場合は true を返し、それ以外の場合は false を返します。
詳細
REGEXP_REPLACE 入力値の中で、正規表現のパターンに一致するテキストをすべて replacement 文字列に置き換えます。
詳細

正規表現に代わる方法

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

関数 説明
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 アナリティクス デモアカウントの「キャンペーン」ディメンションに適用すると、次のような結果が得られます。

キャンペーン 言語
Campaign #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 でも同様に参考にしていただけます。

正規表現の完全な構文については、google/RE2 GitHub ドキュメントをご覧ください。

ワイルドカード

. 任意の 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」で一致するデータ:
10100、10x

「^10」で一致しないデータ:
110、110x

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

「10$」で一致しないデータ:
100、10x

グループ

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


他の正規表現をグループ化する場合にも使用します
「(10)」で一致するデータ:
10101、1011

「([0-9]|[a-z])」で一致するデータ:
すべての数字と小文字

[ ] 囲まれた文字が任意の順序で文字列に含まれる場合に一致します 「[10]」で一致するデータ:
012、120、210

- 角かっこ内の文字範囲が文字列に含まれる場合に一致します 「[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) フラグを使用します。次に例を示します。
  • REGEXP_EXTRACT(MyField, '(?i)(a.*)') は、「abc123」と「ABC123」の両方を抽出します。

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

上述のとおり、バックスラッシュ(\)を使用すると、正規表現のメタ文字をエスケープして、通常の文字として扱うことができます。引用符で囲まれた文字列に含まれるバックスラッシュを通常の文字として一致させるには、バックスラッシュをエスケープする必要があります。その場合、正規表現にはバックスラッシュを 2 つ含めることになります。次に例を示します。

REGEXP_REPLACE(String, "(\\[.*\\])\\+(\\[.*\\])","\\2 \\1")

別の方法として、生の文字列のリテラル プレフィックス(R)を使用することもできます。

REGEXP_REPLACE(String, R"(\[.*\])\+(\[.*\])",R"\2 \1")

 

 

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。

さらにサポートが必要な場合

次の手順をお試しください。

検索
検索をクリア
検索を終了
Google アプリ
メインメニュー