最近更新时间:2023-04-26 15:40:34
函数介绍
根据正则表达式提取符合条件的值。
语法描述
regex_select(value, expr, mi=0, gi=0)
参数说明
参数名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
key | any | 是 | 需要匹配的值 |
expr | string | 是 | 正则表达式 |
mi | number | 否 | 表示匹配到的第几个表达式,0表示第一个。默认是0 |
gi | number | 是 | 表示匹配到的第几个分组,0表示第一个。默认是0 |
示例1
从字段content中获取第一个满足正则表达式的值,并存入新字段selected中
原始日志
{"content":"123abc456edf789"}
加工规则
set("selected",regex_select(v("content"),"\\d+"))
加工结果
{"content":"123abc456edf789","selected":"123"}
示例2
从字段content中获取第二个满足正则表达式的值,并存入新字段selected中。
原始日志
{"content":"123abc456edf789"}
加工规则
set("selected",regex_select(v("content"),"\\d+",mi=1))
加工结果
{"content":"123abc456edf789","selected":"456"}
示例3
从字段content中获取第二个满足正则表达式的第二组值,并存入新字段selected中。
原始日志
{"content":"123abc456edf789"}
加工规则
set("selected",regex_select(v("content"),"(\\d+)([a-z]+)",mi=1,gi=1))
加工结果
{"content":"123abc456edf789","selected":"edf"}
函数介绍
判断是否匹配正则表达式。
语法描述
regex_match(value, expr, full=false)
参数说明
参数名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
value | any | 是 | 需要匹配的值 |
expr | string | 是 | 正则表达式 |
full | bool | 否 | 是否完全匹配正则表达式,默认false |
示例1
字段content中是否包含数字
原始日志
{"content":"123abc456edf789"}
加工规则
set("matched",regex_match(v("content"),"\\d+"))
加工结果
{"content":"123abc456edf789","matched":true}
示例2
字段content中是否都是数字
原始日志
{"content":"123abc456edf789"}
加工规则
set("matched",regex_match(v("content"),"\\d+",full=true))
加工结果
{"content":"123abc456edf789","matched":false}
函数介绍
使用正则表达式将字符串分裂为数组。
语法描述
regex_split(value, expr, maxsplit=0)
参数说明
参数名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
value | any | 是 | 需要分裂的值 |
expr | string | 是 | 正则表达式 |
maxsplit | number | 否 | 最大分裂次数。0表示全部分裂,1表示只分裂第一个匹配,剩余部分不再分裂。 |
示例
通过逗号分裂content字段的值,将结果作为新字段split的值
原始日志
{"content":"a,b,c,d"}
加工规则
set("split",regex_split(v("content"),","))
加工结果
{"content":"a,b,c,d","split":["a","b","c","d"]}
函数介绍
根据正则表达式替换字符串中的指定字符。
语法描述
regex_replace(value, expr, replace="", count=0)
参数说明
参数名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
value | any | 是 | 需要被替换的值 |
expr | string | 是 | 正则表达式 |
replace | string | 否 | 替换后的新字符。可以使用捕获组。 \1表示第一个分组;\2表示第二个分组;依此类推。默认空字符串 |
count | number | 否 | 表示替换次数。0表示替换所有。默认是0 |
示例1
将字段content中的所有数字替换成*。
原始日志
{"content":"123abc456edf789"}
加工规则
set("replaced",regex_replace(v("content"),"\\d",replace="*"))
加工结果
{"content":"123abc456edf789","replaced":"***abc***edf***"}
示例2
将字段content中的第一个数字替换成*。
原始日志
{"content":"123abc456edf789"}
加工规则
set("replaced",regex_replace(v("content"),"\\d",replace="*",count=1))
加工结果
{"content":"123abc456edf789","replaced":"*23abc456edf789"}
函数介绍
根据正则表达式获取符合条件的值,将其组成一个数组返回。
语法描述
regex_findall(value, expr)
参数说明
参数名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
value | any | 是 | 需要匹配的值 |
expr | string | 是 | 正则表达式 |
示例1
从content字段中获取所有字母的列表。
原始日志
{"content":"123abc456edf789"}
加工规则
set("found",regex_findall(v("content"),"[a-z]+"))
加工结果
{"content":"123abc456edf789","found":["abc","edf"]}
纯净模式