日志服务 正则式函数

regexp_extract_all 函数用于提取目标字符串中符合正则表达式的子串合集。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

这篇说说正则式函数基本语法及示例。

日志服务支持如下正则式函数:

函数名称 语法 说明
regexp_extract_all 函数 regexp_extract_all(x, regular expression) 提取目标字符串中符合正则表达式的子串,并返回所有子串的合集。
 regexp_extract_all(x, regular expression, n) 提取目标字符串中符合正则表达式的子串,并返回与目标捕获组匹配的子串合集。
regexp_extract 函数 regexp_extract(x, regular expression) 提取并返回目标字符串中符合正则表达式的第一个子串。
 regexp_extract(x, regular expression, n) 提取目标字符串中符合正则表达式的子串,然后返回与目标捕获组匹配的第一个子串。
regexp_like 函数 regexp_like(x, regular expression) 判断目标字符串是否符合正则表达式。
regexp_replace 函数 regexp_replace(x, regular expression) 删除目标字符串中符合正则表达式的子串,返回未被删除的子串。
 regexp_replace(x, regular expression, replace string) 替换目标字符串中符合正则表达式的子串,返回被替换后的字符串。
regexp_split 函数 regexp_split(x, regular expression) 使用正则表达式分割目标字符串,返回被分割后的子串合集。

二、语法

·提取目标字符串中符合正则表达式的子串,并返回所有子串的合集。

regexp_extract_all(x, regular expression)

·提取目标字符串中符合正则表达式的子串,然后返回与目标捕获组匹配的子串合集。

regexp_extract_all(x, regular expression, n)

三、参数说明

参数 说明
x 参数值为 varchar 类型。
regular expression 正则表达式,例如\\d+。同时支持捕获组,例如(\\d)(\\d)(\\d)。
n 第 n 个捕获组。n 为从1开始的整数。

四、返回值类型

Array 类型。

五、示例

提取 http_protocol 字段中所有的数字,其中 http_protocol 的值为 HTTP/1.1。

·查询和分析语句

* | SELECT regexp_extract_all(http_protocol, '\\d+')

·查询和分析结果

[1,1]

六、regexp_extract 函数

regexp_extract 函数用于提取目标字符串中符合正则表达式的第一个子串。

七、语法

·提取并返回目标字符串中符合正则表达式的第一个子串。

regexp_extract(x, regular expression)

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

regexp_extract(x, regular expression, n)

八、参数说明

参数 说明
x 参数值为 varchar 类型。
regular expression 正则表达式,例如\\d+。同时支持捕获组,例如(\\d)(\\d)(\\d)。
n 第 n 个捕获组。n 为从1开始的整数。

九、返回值类型

Varchar 类型。

十、示例

提取 http_protocol 字段值中的第一个数字,其中 http_protocol 的值为 HTTP/1.1。

·查询和分析语句

* | SELECT regexp_extract(http_protocol, '\\d+')

·查询和分析结果

1

十一、regexp_like 函数

regexp_like 函数用于判断目标字符串是否符合正则表达式。

十二、语法

regexp_like(x, regular expression)

十三、参数说明

参数 说明
x 参数值为 varchar 类型。
regular expression 正则表达式。

十四、返回值类型

Boolean 类型。

十五、示例

判断 server_protocol 字段值中是否包含数字,其中 server_protocol 的值为 HTTP/1.1。

·查询和分析语句

* | select regexp_like(server_protocol, '\\d+')

·查询和分析结果

TRUE

十六、regexp_replace 函数

regexp_replace 函数用于删除或替换目标字符串中符合正则表达式的子串。

十七、语法

·删除目标字符串中符合正则表达式的子串,返回未被删除的子串。

regexp_replace(x, regular expression)

·替换目标字符串中符合正则表达式的子串,返回被替换后的字符串。

regexp_replace(x, regular expression, replace string)

十八、参数说明

参数 说明
x 参数值为 varchar 类型。
regular expression 正则表达式。
replace string 用于替换的子串。正则表达式中使用捕获组时,可通过 $1, $2 的方式引用对应的捕获组。

十九、返回值类型

String 类型。

20、示例

示例1:删除 server_protocol 字段值中的版本号部分,并统计不同通信协议对应的请求数量,其中 server_protocol 的值为 HTTP/1.1。

·查询和分析语句

* | select regexp_replace(server_protocol, '.\\d+') AS server_protocol, count(*) AS count GROUP BY server_protocol

·查询和分析结果

server_protocol count
HTTP 357

示例2:使用*号代替原始字符串hello123world中的数字,并使用-连接字符串中的各个部分。

·查询和分析语句

* | SELECT regexp_replace('hello123world', '(hello)(\\d+)(world)', '$1-***-$3') as demo limit 1

·查询和分析结果

demo
hello-***-world

21、regexp_split 函数

regexp_split 函数用于分割目标字符串,返回被分割后的子串合集。

22、语法

regexp_split(x, regular expression)

23、参数说明

参数 说明
x 参数值为 varchar 类型。
regular expression 正则表达式。

24、返回值类型

Array 类型。

25、示例

使用正斜线(/)分割 server_protocol 字段的值,其中 server_protocol 的值为 HTTP/1.1。

·查询和分析语句

* | select regexp_split(server_protocol, '/')

·查询和分析结果

["HTTP","1.1"]

赞 (0)
上一篇 4天前
下一篇 4天前