本文介绍日志服务支持的正则式函数语法及常见场景的使用示例。
说明
'time'
代表字符串,time
或 "time"
代表字段名或列名。'\d+'
表示一个或多个数字。函数名称 | 语法 | 说明 |
---|---|---|
REGEXP_EXTRACT_ALL(KEY, regular_expression) | 提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。 | |
REGEXP_EXTRACT_ALL(KEY, regular_expression, n) | 提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。 | |
REGEXP_EXTRACT(KEY, regular_expression) | 提取与指定的正则表达式匹配的第一个子字符串。 | |
REGEXP_EXTRACT(KEY, regular_expression, n) | 提取与指定的正则表达式匹配的子字符串,然后返回与目标捕获组匹配的第一个子字符串。 | |
REGEXP_LIKE(KEY, regular_expression) | 判断字段值是否与指定的正则表达式匹配。 | |
REGEXP_REPLACE(KEY, regular_expression) | 删除与指定正则表达式匹配的子字符串,然后返回未被删除的字符串。 | |
REGEXP_REPLACE(KEY, regular_expression, replace_string) | 将与指定正则表达式匹配的子字符串替换为其他字符串,然后返回替换后的字符串。 | |
REGEXP_SPLIT(KEY, regular_expression) | 拆分目标字符串,返回拆分后的子字符串集合。 |
REGEXP_EXTRACT_ALL 函数用于提取与指定正则表达式匹配的子字符串。
语法格式
提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。
REGEXP_EXTRACT_ALL(KEY, regular_expression)
提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。
REGEXP_EXTRACT_ALL(KEY, regular_expression, n)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
regular_expression | 包含捕获组的正则表达式。例如 |
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(KEY, regular_expression)
提取与指定的正则表达式匹配的子字符串,然后返回与目标捕获组匹配的第一个子字符串。
REGEXP_EXTRACT(KEY, regular_expression, n)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
regular_expression | 包含捕获组的正则表达式。例如 |
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(KEY, regular_expression)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
regular_expression | 正则表达式。 |
返回值说明
返回值为 Boolean 类型。
场景
判断 url_test 字段值中是否包含数字。
日志样例
检索和分析语句
*| SELECT REGEXP_LIKE(url_test, '\d+')
检索和分析结果
REGEXP_REPLACE 函数用于删除或替换与指定正则表达式匹配的子字符串。
语法格式
提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。
REGEXP_REPLACE(KEY, regular_expression)
提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。
REGEXP_REPLACE(KEY, regular_expression, replace_string)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
regular_expression | 正则表达式。 |
replace_string | 用于替换的子字符串。 |
返回值说明
返回值为 Varchar 类型。
场景
提取 Query
字段值中所有的数字。
日志样例
检索和分析语句
*| SELECT REGEXP_EXTRACT_ALL(Query, '\d+')
检索和分析结果
REGEXP_SPLIT 函数用于拆分目标字符串,返回拆分后的子字符串集合。
语法格式
REGEXP_SPLIT(KEY, regular_expression)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
regular_expression | 正则表达式。 |
返回值说明
返回值为 Array 类型。
场景
使用下划线(_)拆分 URL
字段的值。
日志样例
检索和分析语句
*| SELECT REGEXP_SPLIT(Query, '_')
检索和分析结果