You need to enable JavaScript to run this app.
导航
正则式函数
最近更新时间:2024.08.23 10:03:48首次发布时间:2024.01.22 17:18:37

本文介绍日志服务支持的正则式函数语法及常见场景的使用示例。

函数列表

说明

  • 在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time"time" 代表字段名或列名。
  • 正则表达式应被半角单引号包裹,否则可能导致分析结果不符合预期,例如 '\d+' 表示一个或多个数字。

函数名称

语法

说明

REGEXP_EXTRACT_ALL 函数

REGEXP_EXTRACT_ALL(KEY, regular_expression)

提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。

REGEXP_EXTRACT_ALL(KEY, regular_expression, n)

提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。

REGEXP_EXTRACT 函数

REGEXP_EXTRACT(KEY, regular_expression)

提取与指定的正则表达式匹配的第一个子字符串。

REGEXP_EXTRACT(KEY, regular_expression, n)

提取与指定的正则表达式匹配的子字符串,然后返回与目标捕获组匹配的第一个子字符串。

REGEXP_LIKE 函数

REGEXP_LIKE(KEY, regular_expression)

判断字段值是否与指定的正则表达式匹配。

REGEXP_REPLACE 函数

REGEXP_REPLACE(KEY, regular_expression)

删除与指定正则表达式匹配的子字符串,然后返回未被删除的字符串。

REGEXP_REPLACE(KEY, regular_expression, replace_string)

将与指定正则表达式匹配的子字符串替换为其他字符串,然后返回替换后的字符串。

REGEXP_SPLIT 函数

REGEXP_SPLIT(KEY, regular_expression)

拆分目标字符串,返回拆分后的子字符串集合。

REGEXP_EXTRACT_ALL 函数

REGEXP_EXTRACT_ALL 函数用于提取与指定正则表达式匹配的子字符串。

函数语法

  • 语法格式

    • 提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。

      REGEXP_EXTRACT_ALL(KEY, regular_expression)
      
    • 提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。

      REGEXP_EXTRACT_ALL(KEY, regular_expression, n)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    regular_expression

    包含捕获组的正则表达式。例如 (\d)(\d)(\d) 表示三个捕获组。

    n

    第 n 个捕获组。n 为从 1 开始的整数。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 示例1

    • 场景
      提取 url_test 字段值中所有的数字。

    • 日志样例

    • 检索和分析语句

      *| SELECT REGEXP_EXTRACT_ALL(url_test, '\d+')
      
    • 检索和分析结果

  • 示例2

    • 场景
      提取 url_test 字段值中的 age 部分,然后统计带 age 的日志条数。

    • 检索和分析语句

      *| SELECT REGEXP_EXTRACT_ALL(url_test, '(age)',1) AS age, COUNT(*) AS count GROUP BY age
      
    • 日志样例

    • 检索和分析结果
      图片

REGEXP_EXTRACT 函数

REGEXP_EXTRACT 函数用于提取与指定的正则表达式匹配的第一个子字符串。

函数语法

  • 语法格式

    • 提取与指定的正则表达式匹配的第一个子字符串。

      REGEXP_EXTRACT(KEY, regular_expression)
      
    • 提取与指定的正则表达式匹配的子字符串,然后返回与目标捕获组匹配的第一个子字符串。

      REGEXP_EXTRACT(KEY, regular_expression, n)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    regular_expression

    包含捕获组的正则表达式。例如(\d)(\d)(\d)表示三个捕获组。

    n

    第 n 个捕获组。n 为从 1 开始的整数。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 示例1

  • 场景
    提取url_test字段值中的第一个数字。

  • 日志样例

  • 检索和分析语句

    *|SELECT REGEXP_EXTRACT(url_test, '\d+')
    
  • 检索和分析结果

  • 示例2

    • 场景
      提取url_test字段值中的第一个age部分。

    • 日志样例

    • 检索和分析语句

      * | SELECT REGEXP_EXTRACT(url_test, '.*(age.*)&', 1) AS age, count(*) AS count GROUP BY age
      
    • 检索和分析结果

  • 示例3

    • 场景
      提取url_test字段值中的冒号(:)和数字部分。

    • 日志样例

    • 检索和分析语句

      * | SELECT REGEXP_EXTRACT(url_test, ':\d+')     
      
    • 检索和分析结果

REGEXP_LIKE 函数

REGEXP_LIKE 函数用于判断字段值是否与指定的正则表达式匹配。

函数语法

  • 语法格式

    REGEXP_LIKE(KEY, regular_expression)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    regular_expression

    正则表达式。

  • 返回值说明
    返回值为 Boolean 类型。

函数示例

  • 场景
    判断 url_test 字段值中是否包含数字。

  • 日志样例

  • 检索和分析语句

    *| SELECT REGEXP_LIKE(url_test, '\d+')
    
  • 检索和分析结果

REGEXP_REPLACE 函数

REGEXP_REPLACE 函数用于删除或替换与指定正则表达式匹配的子字符串。

函数语法

  • 语法格式

    • 提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。

      REGEXP_REPLACE(KEY, regular_expression)
      
    • 提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。

      REGEXP_REPLACE(KEY, regular_expression, replace_string)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    regular_expression

    正则表达式。

    replace_string

    用于替换的子字符串。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 示例1
    • 场景
      提取 Query 字段值中所有的数字。

    • 日志样例
      图片

    • 检索和分析语句

      *| SELECT REGEXP_EXTRACT_ALL(Query, '\d+')
      
    • 检索和分析结果
      图片

REGEXP_SPLIT 函数

REGEXP_SPLIT 函数用于拆分目标字符串,返回拆分后的子字符串集合。

函数语法

  • 语法格式

    REGEXP_SPLIT(KEY, regular_expression)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    regular_expression

    正则表达式。

  • 返回值说明
    返回值为 Array 类型。

函数示例

  • 场景
    使用下划线(_)拆分 URL 字段的值。

  • 日志样例
    图片

  • 检索和分析语句

    *| SELECT REGEXP_SPLIT(Query, '_')
    
  • 检索和分析结果
    图片