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

Simple Log Service:正規表現関数

最終更新日:Feb 15, 2025

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

概要 - 正規表現関数

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

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

関数

構文

説明

SQL でのサポート

SPL でのサポート

regexp_extract_all 関数

regexp_extract_all(x, 正規表現)

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

×

regexp_extract_all(x, 正規表現, n)

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

×

regexp_extract 関数

regexp_extract(x, 正規表現)

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

regexp_extract(x, 正規表現, n)

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

regexp_extract_bool 関数

regexp_extract_bool(x, 正規表現)

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

×

regexp_extract_bool(x, 正規表現, n)

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

×

regexp_extract_long 関数

regexp_extract_long(x, 正規表現)

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

×

regexp_extract_long(x, 正規表現, n)

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

×

regexp_extract_double 関数

regexp_extract_double(x, 正規表現)

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

×

regexp_extract_double(x, 正規表現, n)

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

×

regexp_like 関数

regexp_like(x, 正規表現)

指定された文字列が指定された正規表現に一致するかどうかを確認します。

regexp_replace 関数

regexp_replace(x, 正規表現)

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

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

指定された文字列内の、指定された正規表現に一致する部分文字列を置換し、結果の文字列を返します。

regexp_split 関数

regexp_split(x, 正規表現)

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

×

説明

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

regexp_extract_all 関数

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

構文

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

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

    regexp_extract_all(x, 正規表現, 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, 正規表現)
  • 次の構文は、指定された文字列から、指定された正規表現に一致する部分文字列を抽出し、正規表現の n 番目のキャプチャグループに最初に一致する部分文字列を返すために使用されます。

    regexp_extract(x, 正規表現, 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+') 
      説明

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

    • クエリと分析結果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 関数は、指定された文字列から、指定された正規表現に一致する部分文字列を抽出し、部分文字列をブール型に変換します。 関数が部分文字列の変換に失敗した場合、null が返されます。 変換は、部分文字列が true または false の単語である場合にのみ成功します。 true または false の単語では、大文字と小文字は区別されません。

構文

  • 次の構文は、指定された文字列から、指定された正規表現に一致する部分文字列を抽出し、部分文字列をブール型に変換するために使用されます。 関数が部分文字列の変換に失敗した場合、null が返されます。

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

    regexp_extract_bool(x, 正規表現, n)

パラメーター

パラメーター

説明

x

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

正規表現

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

n

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

戻り値の型

ブール型。

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

    • サンプルフィールド

      false 
    • クエリ文(デバッグ

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

      image

regexp_extract_long 関数

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

構文

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

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

    regexp_extract_long(x, 正規表現, 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, 正規表現)
  • 次の構文は、指定された文字列から、指定された正規表現に一致する部分文字列を抽出し、正規表現の n 番目のキャプチャグループに一致する部分文字列を返し、部分文字列を double 型に変換するために使用されます。 関数が部分文字列の変換に失敗した場合、null が返されます。

    regexp_extract_double(x, 正規表現, 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_like 関数

regexp_like 関数は、指定された文字列が指定された正規表現に一致するかどうかを確認します。

構文

regexp_like(x, 正規表現)

パラメーター

パラメーター

説明

x

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

正規表現

正規表現。

戻り値の型

ブール型。

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, 正規表現)
  • 次の構文は、指定された文字列内の、指定された正規表現に一致する部分文字列を置換し、結果の文字列を返すために使用されます。

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

パラメーター

パラメーター

説明

x

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

正規表現

正規表現。

置換文字列

正規表現に一致する部分文字列を置換するために使用される部分文字列。

戻り値の型

varchar 型。

SQL

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

    • サンプルフィールド

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

      * | select regexp_replace(region, 'cn.*','中国') 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 で始まるリージョン名を 中国 に置換します。

    • サンプルフィールド

region:cn-shanghai
  • SPL 文

* | extend a = regexp_replace(region, 'cn.*','中国')
  • 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, 正規表現)

パラメーター

パラメーター

説明

x

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

正規表現

正規表現。

戻り値の型

配列型。

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

  • サンプルフィールド

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

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