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

Simple Log Service:正規表現関数

最終更新日:Nov 09, 2025

このトピックでは、正規表現関数の基本的な構文と例について説明します。

正規表現関数の概要

Simple Log Service は、次の正規表現関数をサポートしています。 正規表現は RE2 構文 を使用します。

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

関数

構文

説明

SQL サポート

SPL サポート

regexp_extract_all 関数

regexp_extract_all(x, 正規表現)

ソース文字列から正規表現に一致する部分文字列を抽出し、部分文字列の配列を返します。

×

regexp_extract_all(x, 正規表現, n)

ソース文字列から正規表現に一致する部分文字列を抽出し、キャプチャグループに一致する部分文字列の配列を返します。

×

regexp_extract 関数

regexp_extract(x, 正規表現)

ソース文字列から正規表現に一致する最初の部分文字列を抽出して返します。

regexp_extract(x, 正規表現, n)

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

regexp_extract_bool 関数

regexp_extract_bool(x, 正規表現)

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

×

regexp_extract_bool(x, 正規表現, n)

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

×

regexp_extract_long 関数

regexp_extract_long(x, 正規表現)

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

×

regexp_extract_long(x, 正規表現, n)

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

×

regexp_extract_double 関数

regexp_extract_double(x, 正規表現)

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

×

regexp_extract_double(x, 正規表現, n)

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

×

regexp_extract_map 関数

regexp_extract_map(x, 正規表現, keys)

キー情報を指定します。 キャプチャグループに一致する部分文字列が値として使用されます。

×

regexp_extract_map(x, 正規表現)

正規表現には、キーと値に一致する 2 つのキャプチャグループが含まれます。

×

regexp_like 関数

regexp_like(x, 正規表現)

ソース文字列が正規表現に一致するかどうかを確認します。

regexp_replace 関数

regexp_replace(x, 正規表現)

ソース文字列から正規表現に一致する部分文字列を削除し、残りの部分文字列を返します。

regexp_replace(x, 正規表現, 置換文字列)

ソース文字列内の正規表現に一致する部分文字列を置き換え、新しい文字列を返します。

regexp_split 関数

regexp_split(x, 正規表現)

正規表現を使用してソース文字列を分割し、部分文字列の配列を返します。

×

説明

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

regexp_extract_all 関数

regexp_extract_all 関数は、ソース文字列から正規表現に一致する部分文字列を抽出します。

構文

  • ソース文字列から正規表現に一致するすべての部分文字列を抽出し、配列で返します。

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

    regexp_extract_all(x, regular expression, n)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

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

n

n 番目のキャプチャグループ。 n は 1 から始まる整数です。

戻り値の型

配列型。

  • 例 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 型です。

正規表現

キャプチャグループを含む正規表現。 たとえば、(\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+') 
      説明

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

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

SPL

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

    • フィールドのサンプル

server_protocol:HTTP/2.0
  • クエリ文

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

image.png

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

    • フィールドのサンプル

request_uri:/request/path-3/file-5
  • クエリ文

* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
  • クエリと分析結果

image.png

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

    • フィールドのサンプル

message:error'1232
  • クエリ文

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

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

  • クエリと分析結果

image.png

regexp_extract_bool 関数

regexp_extract_bool 関数は、ソース文字列から正規表現に一致する部分文字列を抽出し、その部分文字列を BOOLEAN 型に変換します。 変換に失敗した場合は、null が返されます。 変換が成功するのは、部分文字列が "true" または "false" の場合のみです。 これらの値では大文字と小文字は区別されません。

構文

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

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

    regexp_extract_bool(x, regular expression, n)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

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

n

n 番目のキャプチャグループ。 n は 1 から始まる整数です。

戻り値の型

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)
  • ソース文字列から正規表現に一致する部分文字列を抽出し、指定されたキャプチャグループに一致する部分文字列を返して、BIGINT 型に変換します。 変換に失敗した場合は、null が返されます。

    regexp_extract_long(x, regular expression, n)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

キャプチャグループを含む正規表現。 たとえば、(\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)
  • ソース文字列から正規表現に一致する部分文字列を抽出し、指定されたキャプチャグループに一致する部分文字列を返して、DOUBLE 型に変換します。 変換に失敗した場合は、null が返されます。

    regexp_extract_double(x, regular expression, n)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

キャプチャグループを含む正規表現。 たとえば、(\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_extract_map 関数

regexp_extract_map 関数は、ソース文字列から正規表現内のすべてのキャプチャグループに一致する部分文字列を抽出します。

構文

  • キー情報を指定します。 キャプチャグループに一致する部分文字列が値として使用されます。

regexp_extract_map(x, regular expression, keys)
  • 正規表現には、キーと値に一致する 2 つのキャプチャグループが含まれます。

regexp_extract_map(x, regular expression)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

regular expression

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

keys

キャプチャされた部分文字列のキーの名前。 値は ARRAY(VARCHAR) 型です。 要素の数は、正規表現パラメーターのキャプチャグループの数と同じである必要があります。

戻り値の型

MAP(VARCHAR, VARCHAR)

  • 例 1: server_protocol フィールドからプロトコル名とバージョンを抽出します。

    • フィールドのサンプル

      server_protocol: 'HTTP/2.0'
    • クエリ文

      select regexp_extract_map(server_protocol, '(\w+)/([\d\.]+)', array['name', 'version']) as protocol
    • クエリと分析結果

      image.png

  • 例 2: content フィールドからすべてのキーと値のペアを抽出します。

    • フィールドのサンプル

      content: 'verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+"'
    • クエリ文

      select regexp_extract_map(content, '(\w+)="([^"]*)"') as args
    • 出力データ

      image.png

regexp_like 関数

regexp_like 関数は、ソース文字列が正規表現に一致するかどうかを確認します。

構文

regexp_like(x, regular expression)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

正規表現。

戻り値の型

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
  • クエリ文

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

image.png

regexp_replace 関数

ソース文字列内の正規表現に一致する部分文字列を削除または置換します。

構文

  • ソース文字列から正規表現に一致する部分文字列を削除し、残りの部分文字列を返します。

    regexp_replace(x, regular expression)
  • ソース文字列内の正規表現に一致する部分文字列を置き換え、新しい文字列を返します。

    regexp_replace(x, regular expression, replace string)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

正規表現。

置換文字列

置換に使用される部分文字列。

戻り値の型

VARCHAR

SQL

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

    • 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
  • クエリ文

* | extend a = regexp_replace(region, 'cn.*','China')
  • クエリと分析結果

    image.png

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

    • フィールドのサンプル

server_protocol:HTTP/2.0
* | extend a = regexp_replace(server_protocol, '.\d+')
  • クエリと分析結果

image.png

regexp_split 関数

regexp_split 関数は、ソース文字列を分割し、部分文字列の配列を返します。

構文

regexp_split(x, regular expression)

パラメーター

パラメーター

説明

x

値は VARCHAR 型です。

正規表現

正規表現。

戻り値の型

データ型は配列です。

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

  • フィールドのサンプル

    request_uri:/request/path-0/file-7
  • クエリ文 (テスト)

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