すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:正規表現関数

最終更新日:Mar 06, 2025

このトピックでは、正規表現関数の構文及び使用方法の例について説明します。

正規表現関数の概要

次の表に、Simple Log Service でサポートされている正規表現関数を示します。正規表現には RE2 構文が使用されます。詳細については、「RE2 構文」をご参照ください。

重要

分析文で文字列を使用する場合は、文字列を一重引用符 ('') で囲む必要があります。囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。たとえば、 'status' は「status」という文字列を示し、status または "status" は「status」というフィールドを示します。

関数

構文

説明

SQL でのサポート

SPL でのサポート

regexp_extract_all 関数

regexp_extract_all(x, regular expression)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、一致するすべての部分文字列の配列を返します。

×

regexp_extract_all(x, regular expression, n)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列の配列を返します。

×

regexp_extract 関数

regexp_extract(x, regular expression)

指定した正規表現に一致する最初の部分文字列を指定された文字列から抽出し、その部分文字列を返します。

regexp_extract(x, regular expression, n)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する最初の部分文字列を返します。

regexp_extract_bool 関数

regexp_extract_bool(x, regular expression)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を boolean 型に変換します。変換に失敗した場合は null が返されます。

×

regexp_extract_bool(x, regular expression, n)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を boolean 型に変換します。変換に失敗した場合は null が返されます。

×

regexp_extract_long 関数

regexp_extract_long(x, regular expression)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を bigint 型に変換します。変換に失敗した場合は null が返されます。

×

regexp_extract_long(x, regular expression, n)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を bigint 型に変換して、変換に失敗した場合は null が返されます。

×

regexp_extract_double 関数

regexp_extract_double(x, regular expression)

指定した正規表現に一致する最初の部分文字列を指定された文字列から抽出し、その部分文字列を double 型に変換します。変換に失敗した場合は null が返されます。

×

regexp_extract_double(x, regular expression, n)

指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を double 型に変換して、変換に失敗した場合は null が返されます。

×

regexp_like 関数

regexp_like(x, regular expression)

指定された文字列が指定した正規表現と一致するかどうかをチェックします。

regexp_replace 関数

regexp_replace(x, regular expression)

指定した正規表現に一致する部分文字列を指定された文字列から削除し、残っている部分文字列を返します。

regexp_replace(x, regular expression, replace string)

指定された文字列の中で、指定した正規表現に一致する部分文字列を置き換えてから、文字列を返します。

regexp_split 関数

regexp_split(x, regular expression)

指定された正規表現を使用して、文字列を複数の部分文字列に分割し、部分文字列の配列を返します。

×

説明

正規表現関数を使用して文字列から一重引用符 (') を抽出する場合は、正規表現にもう一つの一重引用符 (') を追加する必要があります。詳細については、「regexp_extract 関数 (例 3)」をご参照ください。

regexp_extract_all 関数

regexp_extract_all 関数は、指定した正規表現に一致する部分文字列を指定された文字列から抽出します。

構文

  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、一致するすべての部分文字列の配列を返します。

    regexp_extract_all(x, regular expression)
  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列の配列を返します。

    regexp_extract_all(x, regular expression, n)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

キャプチャグループを含む正規表現です。たとえば、(\d)(\d)(\d) は 3 つのキャプチャグループを示します。

n

n 番目のキャプチャグループです。n は 1 以上の整数です。

戻り値の型

array 型

  • 例 1: server_protocol フィールドの値からすべての数字を抽出します。

    • フィールド

      server_protocol:HTTP/2.0
    • クエリ文 (デバッグ)

      *| SELECT regexp_extract_all(server_protocol, '\d+')
    • クエリと分析の結果regexp_extract_all

  • 例 2: http_user_agent フィールドの値から Chrome 情報を抽出し、Chrome ブラウザによって開始されたリクエストの数を計算します。

    • フィールド

      http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1
    • クエリ文 (デバッグ)

      *| SELECT regexp_extract_all(http_user_agent, '(Chrome)',1) AS Chrome, count(*) AS count GROUP BY Chrome
    • クエリと分析の結果regexp_extract_all

regexp_extract 関数

regexp_extract 関数は、指定した正規表現に一致する部分文字列を指定された文字列から抽出します。

構文

  • 指定した正規表現に一致する最初の部分文字列を指定された文字列から抽出し、その部分文字列を返します。

    regexp_extract(x, regular expression)
  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する最初の部分文字列を返します。

    regexp_extract(x, regular expression, n)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

キャプチャグループを含む正規表現です。たとえば、(\d)(\d)(\d) は 3 つのキャプチャグループを示します。

n

n 番目のキャプチャグループです。n は 1 以上の整数です。

戻り値の型

varchar 型

SQL

  • 例 1: server_protocol フィールドの値から最初の数字を抽出します。

    • フィールド

      server_protocol:HTTP/2.0
    • クエリ文 (デバッグ)

      *|SELECT regexp_extract(server_protocol, '\d+')
    • クエリと分析の結果regexp_extract

  • 例 2: request_uri フィールドの値からファイル情報を抽出し、各ファイルへのアクセス数を計算します。

    • フィールド

      request_uri:/request/path-3/file-5
    • クエリ文 (デバッグ)

      * | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) AS file, count(*) AS count GROUP BY file
    • クエリと分析の結果分析uri

  • 例 3: message フィールドの値から一重引用符 (') と数字を抽出します。

    • フィールド

      message:error'1232
    • クエリ文

      * | SELECT regexp_extract(message, '''\d+') 
      説明

      正規表現関数を使用して文字列から一重引用符 (') を抽出する場合は、正規表現にもう一つの一重引用符 (') を追加する必要があります。

    • クエリと分析の結果regexp_extract函数

SPL

  • 例 1: server_protocol フィールドの値から最初の数字を抽出します。

    • フィールド

server_protocol:HTTP/2.0
  • SPL 文

* | extend a = regexp_extract(server_protocol, '\d+')
  • SPL の結果

image.png

  • 例 2: request_uri フィールドの値からファイル情報を抽出します。

    • フィールド

request_uri:/request/path-3/file-5
  • SPL 文

* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
  • SPL の結果

image.png

  • 例 3: message フィールドの値から一重引用符 (') と数字を抽出します。

    • フィールド

message:error'1232
  • SPL 文

* | extend a = regexp_extract(message, '''\d+') 

説明

正規表現関数を使用して文字列から一重引用符 (') を抽出する場合は、正規表現にもう一つの一重引用符 (') を追加する必要があります。

  • SPL の結果

image.png

regexp_extract_bool 関数

regexp_extract_bool 関数は、指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を boolean 型に変換します。変換に失敗した場合は null が返されます。部分文字列が「true」または「false」という単語である場合にのみ、変換が成功します。「true」または「false」という単語は、大文字と小文字を区別しません。

構文

  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を boolean 型に変換します。変換に失敗した場合は null が返されます。

    regexp_extract_bool(x, regular expression)
  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を boolean 型に変換して、変換に失敗した場合は null が返されます。

    regexp_extract_bool(x, regular expression, n)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

キャプチャグループを含む正規表現です。たとえば、(\d)(\d)(\d) は 3 つのキャプチャグループを示します。

n

n 番目のキャプチャグループです。n は 1 以上の整数です。

戻り値の型

boolean 型

  • フィールドの値から boolean 型の値を抽出します。

    • フィールド

      false 
    • クエリ文 (デバッグ)

      *| select regexp_extract_bool('false', '[a-zA-Z]+')
    • クエリと分析の結果

      image

regexp_extract_long 関数

regexp_extract_long 関数は、指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を bigint 型に変換します。変換に失敗した場合は null が返されます。

構文

  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を bigint 型に変換します。変換に失敗した場合は null が返されます。

    regexp_extract_long(x, regular expression)
  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を bigint 型に変換して、変換に失敗した場合は null が返されます。

    regexp_extract_long(x, regular expression, n)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

キャプチャグループを含む正規表現です。たとえば、(\d)(\d)(\d) は 3 つのキャプチャグループを示します。

n

n 番目のキャプチャグループです。n は 1 以上の整数です。

戻り値の型

bigint 型

  • time フィールドの値から数字を抽出します。

    • フィールド

      time:19/Dec/2024:06:16:06
    • クエリ文 (デバッグ)

      *|SELECT regexp_extract_long(time, '(\d{2})/', 1) 
    • クエリと分析の結果

      image

regexp_extract_double 関数

regexp_extract_double 関数は、指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を double 型に変換します。変換に失敗した場合は null が返されます。

構文

  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、その部分文字列を double 型に変換します。変換に失敗した場合は null が返されます。

    regexp_extract_double(x, regular expression)
  • 指定した正規表現に一致する部分文字列を指定された文字列から抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返します。その部分文字列を double 型に変換して、変換に失敗した場合は null が返されます。

    regexp_extract_double(x, regular expression, n)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

キャプチャグループを含む正規表現です。たとえば、(\d)(\d)(\d) は 3 つのキャプチャグループを示します。

n

n 番目のキャプチャグループです。n は 1 以上の整数です。

戻り値の型

double 型

  • server_protocol フィールドの値から数字を抽出します。

    • フィールド

      server_protocol:HTTP/1.1
    • クエリ文 (デバッグ)

      *|SELECT regexp_extract_double(server_protocol, '\d+') 
    • クエリと分析の結果

      image

regexp_like 関数

regexp_like 関数は、指定された文字列が指定した正規表現と一致するかどうかをチェックします。

構文

regexp_like(x, regular expression)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

正規表現を入力すること。

戻り値の型

boolean 型

SQL

server_protocol フィールドの値に数字が含まれているかどうかを確認します。

  • フィールド

    server_protocol:HTTP/2.0
  • クエリ文 (デバッグ)

    *| select regexp_like(server_protocol, '\d+')
  • クエリと分析の結果regexp_like

SPL

server_protocol フィールドの値に数字が含まれているかどうかを確認します。

  • フィールド

server_protocol:HTTP/2.0
  • SPL 文

* |extend a = regexp_like(server_protocol, '\d+')
  • SPL の結果

image.png

regexp_replace 関数

regexp_replace 関数は、指定した正規表現に一致する部分文字列を指定された文字列から削除、または置換します。

構文

  • 指定した正規表現に一致する部分文字列を指定された文字列から削除し、残っている部分文字列を返します。

    regexp_replace(x, regular expression)
  • 指定された文字列の中で、指定した正規表現に一致する部分文字列を置き換えてから、文字列を返します。

    regexp_replace(x, regular expression, replace string)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

正規表現を入力すること。

replace string

正規表現に一致する部分文字列を置換する部分文字列。

戻り値の型

varchar 型

SQL

  • 例 1: region フィールドの値の中でcn で始まるリージョン名を China に置き換え、China からのリクエスト数を計算します。

    • フィールド

      region:cn-shanghai
    • クエリ文 (デバッグ)

      * | select regexp_replace(region, 'cn.*','China') AS region, count(*) AS count GROUP BY region
    • クエリと分析の結果regexp_replace

  • 例 2: server_protocol フィールドの値の中でバージョン番号を削除し、各通信プロトコルのリクエスト数を計算します。

    • フィールド

      server_protocol:HTTP/2.0
    • クエリ文 (デバッグ)

      *| select regexp_replace(server_protocol, '.\d+') AS server_protocol, count(*) AS count GROUP BY server_protocol
    • クエリと分析の結果regexp_replace

SPL

  • 例 1: region フィールドの値の中で cn で始まるリージョン名を China に置き換えます。

    • フィールド

region:cn-shanghai
  • SPL 文

* | extend a = regexp_replace(region, 'cn.*','China')
  • SPL の結果

    image.png

  • 例 2: server_protocol フィールドの値の中でバージョン番号を削除します。

    • フィールド

server_protocol:HTTP/2.0
* | extend a = regexp_replace(server_protocol, '.\d+')
  • SPL の結果

image.png

regexp_split 関数

regexp_split 関数は、指定された正規表現を使用して、文字列を複数の部分文字列に分割し、部分文字列の配列を返します。

構文

regexp_split(x, regular expression)

パラメーター

パラメーター

説明

x

このパラメーターの値の型が varchar 型です。

regular expression

正規表現を入力すること。

戻り値の型

array 型

request_uri フィールドの値をスラッシュ (/) で分割します。

  • フィールド

    request_uri:/request/path-0/file-7
  • クエリ文 (デバッグ)

    * | SELECT regexp_split(request_uri,'/')
  • クエリと分析の結果regexp_split