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

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

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

パラメーター

パラメーター説明
xこのパラメーターの値はvarchar型です。
regular expressionキャプチャグループを含む正規表現。 たとえば、(\d)(\d)(\d) は3つのキャプチャグループを示します。
nn番目のキャプチャグループ。 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、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つのキャプチャグループを示します。
nn番目のキャプチャグループ。 nは1以上の整数である。

戻り値のデータ型

varcharタイプ。

  • 例1: server_protocolフィールドの値から最初の数字を抽出します。
    • Sample field
      server_protocol:HTTP/2.0
    • クエリ文
      *|SELECT regexp_extract(server_protocol, '\d+')
    • クエリおよび分析の結果regexp_extract
  • Example 2: request_uriフィールドの値からファイル情報を抽出し、各ファイルの訪問回数を算出する。
    • サンプルフィールド
      request_uri:/request/path-3/file-5
    • クエリ文
      * | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) ASファイル, count(*) AS count GROUP BY file
    • クエリおよび分析の結果URIの分析
  • 例3: messageフィールドの値から単一引用符 (') と数字を抽出します。
    • サンプルフィールド
      メッセージ: error'1232
    • クエリ文
      * | SELECT regexp_extract (メッセージ、''\d + ') 
      説明 正規表現関数を使用して文字列から単一引用符 (') を抽出する場合は、正規表現に単一引用符 (') を追加する必要があります。
    • クエリおよび分析の結果regexp_extract関数

regexp_like関数

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

構文

regexp_like( x正規表現)

パラメーター

パラメーター説明
xこのパラメーターの値はvarchar型です。
正規表現正規表現。

戻り値のデータ型

ブール型。

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

  • サンプルフィールド
    server_protocol:HTTP/2.0
  • クエリ文
    * | regexp_like(server_protocol, '\d +') を選択
  • クエリおよび分析の結果regexp_like

regexp_replace関数

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

構文

  • 次の構文を使用して、指定した正規表現に一致する部分文字列を指定した文字列から削除し、残っている部分文字列を返します。
    regexp_replace( x正規表現)
  • 次の構文を使用して、指定された文字列内の指定された正規表現に一致する部分文字列を置き換え、結果文字列を返します。
    regexp_replace( x正規表現置換文字列)

パラメーター

パラメーター説明
xこのパラメーターの値はvarchar型です。
正規表現正規表現。
replace string正規表現に一致する部分文字列を置き換えるために使用される部分文字列。

戻り値のデータ型

varcharタイプ。

  • 例1: regionフィールドの値のcnで始まるリージョン名をChinaに置き換え、Chinaからのリクエスト数を計算します。
    • サンプルフィールド
      リージョン: cn-shanghai
    • クエリ文
      * | regexp_replace(region, 'cn.* ','China') ASリージョン, count(*) AS count GROUP BYリージョン
    • クエリおよび分析の結果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

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