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

Simple Log Service:正規表現関数

最終更新日:Nov 01, 2024

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

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

重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 '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_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, regular expression)
  • 次の構文を使用して、指定した文字列から指定した正規表現に一致する部分文字列を抽出し、正規表現のn番目のキャプチャグループに一致する部分文字列の配列を返します。

    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+') 
      説明

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

    • クエリと分析結果 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_like関数

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

構文

regexp_like(x, regular expression)

パラメーター

パラメーター

説明

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

    regexp_replace(x, regular expression, replace string)

パラメーター

パラメーター

説明

x

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

正規表現

正規表現を入力します。

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
  • SPLステートメント

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

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