tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

正则处理函数

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 15:50:14

简介

日志含有大量的文本,在对文本的处理过程中,正则函数可以较为灵活的提取关键字、做脱敏、或者判断是否包含有指定的字符。如下图所示:



日志场景中常见的正则举例,请参考 在线测试正则公式
用途
日志原文
正则表达式
提取结果
提取大括号中的内容
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\{[^\\}]+\\}
{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 10], "orderField": "createTime"}}}
提取中括号的内容
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\[\\S+\\]
[328495eb-b562-478f-9d5d-3bf7e] [INFO]
提取时间
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}
2021-11-08 11:11:08,232
提取特定长度的大写字符
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
[A-Z]{4}
INFO
提取特定长度的小写字符
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 15], "orderField": "createTime"}}}
[a-z]{6}
versio passwo timest interf create
提取字母+数字
[2021-11-24 11:11:08,232][328495eb-b562-478f-9d5d-3bf7e][INFO] curl -H 'Host: ' http://abc.com:8080/pc/api -d '{"version": "1.0", "user": "CGW", "password": "123", "timestamp": 1637723468, "interface": {"Name": "ListDetail", "para": {"owner": "1253", "limit": [10, 14], "orderField": "createTime"}}}
([a-z]{3}):([0-9]{4})
com:8080

regex_match 函数

函数定义

基于正则对数据进行匹配,返回是否匹配成功,可以选择全匹配还是部分匹配。
语法描述
regex_match(字段值, regex="", full=True)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-
regex
正则表达式
string
-
-
full
是否开启全匹配,对于全匹配,必须值完全满足正则,部分匹配则表示值中部分内容满足正则
bool
True
-

示例

示例1:判断正则公式"192\\.168.*"和字段 IP 的值192.168.0.1是否完全匹配(full=True),regex_match 函数返回 True。 原始日志:
{"IP":"192.168.0.1", "status": "500"}
加工规则:
//判断正则公式"192\\.168.*"和字段ip的值192.168.0.1是否完全匹配,将结果保存到新字段"matched"中。
t_if(regex_match(v("IP"), regex="192\\.168.*", full=True), fields_set("matched", True))
加工结果:
{"IP":"192.168.0.1","matched":"TRUE","status":"500"}
示例2:判断正则公式"192*"和字段 IP 的值192.168.0.1是否部分匹配(full=Flase),regex_match 函数返回 True。 原始日志:
{"IP":"192.168.0.1", "status": "500"}
加工规则:
t_if(regex_match(v("ip"), regex="192", full=False), fields_set("matched", True))
加工结果:
{"IP":"192.168.0.1","matched":"TRUE","status":"500"}

regex_select 函数

函数定义

基于正则对数据进行匹配,返回相应的部分匹配结果,可以指定匹配结果的第几个表达式,以及第几个分组(部分匹配+指定捕获组序号),如果最终没有匹配结果,则返回空字符串。

语法描述

regex_select(字段值, regex="", index=1, group=1)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-
regex
正则表达式
string
-
-
index
匹配结果中的第几个表达式
number
默认第一个
-
group
匹配结果中的第几个分组
number
默认第一个
-

示例

根据正则表达式,对字段值进行不同的截取。
原始日志:
{"data":"hello123,world456", "status": "500"}
加工规则:
fields_set("match_result", regex_select(v("data"), regex="[a-z]+(\\d+)",index=0, group=0))
fields_set("match_result1", regex_select(v("data"), regex="[a-z]+(\\d+)", index=1, group=0))
fields_set("match_result2", regex_select(v("data"), regex="([a-z]+)(\\d+)",index=0, group=0))
fields_set("match_result3", regex_select(v("data"), regex="([a-z]+)(\\d+)",index=0, group=1))
加工结果:
{"match_result2":"hello123","match_result1":"world456","data":"hello123,world456","match_result3":"hello","match_result":"hello123","status":"500"}

regex_split 函数

函数定义

基于正则对数据进行分割,返回 JSON array 字符串(部分匹配)。

语法描述

regex_split(字段值, regex=\\"\\", limit=100)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-
regex
正则表达式
string
-
-
limit
分割最大数组长度,当超过长度时,剩余未分割部分将作为一个元素,添加到数组
number
默认值100
-

示例

原始日志:
{"data":"hello123world456", "status": "500"}
加工规则:
fields_set("split_result", regex_split(v("data"), regex="\\d+"))
加工结果:
{"data":"hello123world456","split_result":"[\\"hello\\",\\"world\\"]","status":"500"}

regex_replace 函数

函数定义

基于正则匹配并替换(部分匹配),主要用于脱敏场景。

语法描述

regex_replace(字段值, regex="", replace="", count=0)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-
regex
正则表达式
string
-
-
replace
目标字符串,使用此字符串替换匹配结果
string
-
-
count
替换次数,默认0,进行全部替换
number
默认值0
-

示例

示例1:根据正则表达式,对字段值进行替换。 原始日志:
{"data":"hello123world456", "status": "500"}
加工规则:
fields_set("replace_result", regex_replace(v("data"), regex="\\d+", replace="", count=0))
加工结果:
{"replace_result":"helloworld","data":"hello123world456","status":"500"}
示例2:对用户 ID、手机号码、IP 地址进行脱敏。 原始日志:
{"Id": "dev@12345","Ip": "11.111.137.225","phonenumber": "13912345678"}
加工规则:
//对 Id 字段进行脱敏处理,结果为dev@***45
fields_set("Id",regex_replace(v("Id"),regex="\\d{3}", replace="***",count=0))
fields_set("Id",regex_replace(v("Id"),regex="\\S{2}", replace="**",count=1))
//对 phonenumber 字段进行脱敏处理,将中间的4位数替换为****,结果为139****5678
fields_set("phonenumber",regex_replace(v("phonenumber"),regex="(\\d{0,3})\\d{4}(\\d{4})", replace="$1****$2"))
//对 IP 字段进行脱敏处理,将第二段替换为***,结果为11.***137.225。
fields_set("Ip",regex_replace(v("Ip"),regex="(\\d+\\.)\\d+(\\.\\d+\\.\\d+)", replace="$1***$2",count=0))
加工结果:
{"Id":"**v@***45","Ip":"11.***.137.225","phonenumber":"139****5678"}

regex_findall 函数

函数定义

基于正则进行匹配,并将匹配结果添加到 JSON 数组中,并返回 array 字符串(部分匹配)。

语法描述

regex_findall(字段值, regex="")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-
regex
正则表达式
string
-
-

示例

原始日志:
{"data":"hello123world456", "status": "500"}
加工规则:
fields_set("result", regex_findall(v("data"), regex="\\d+"))
加工结果:
{"result":"[\\"123\\",\\"456\\"]","data":"hello123world456","status":"500"}

sensitive_detection函数

函数定义

检测敏感信息,例如身份证、银行卡等敏感信息。
注意:
请谨慎使用脱敏遮盖选项 replace_items,脱敏后的数据无法复原。

语法描述

sensitive_detection(scope="", ratio=1, discover_items="", replace_items="")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
scope
检测字段名称
string
ALL_FIELDS
-
sample_ratio
检测比例,取值如下:
1:表示全部检测
0.5:表示采样 50% 进行检测
number
-
-
discover_items
检测项,以 , 分隔
string
-
CHINA_PHONE_NUM,EMAIL,CHINA_IDCARD, ADDR,DEBIT_CARD,CREDIT_CARD,CHINA_PASSPORT,MAC_ADDR,IP,DOMAIN,LOCATION,VIN,PLATE_NUMBER,NAME,PASSWORD,TOKEN
replace_items
遮盖项,以 , 分隔
string
-
CHINA_PHONE_NUM,EMAIL,CHINA_IDCARD, ADDR,DEBIT_CARD,CREDIT_CARD,CHINA_PASSPORT,MAC_ADDR,IP,VIN,PASSWORD,TOKEN,NAME

示例

原始日志:
{
"sensitive_field1": "CLS log 13912345678 my car JTJHT00W274025559 www.tencent.com CLS数据加工",
"sensitive_field2": "etl@tenctent.com ",
"NON_sensitive_field": "hello world"
}
加工规则:
/*scope=ALL_FIELDS意为搜索整条日志中的所有字段
sample_ratio=1,意为对所有的日志进行敏感信息检测
电话、Email进行检测
并将电话信息脱敏(遮盖),请谨慎使用replace_items选项,遮盖后无法复原.*/
sensitive_detection(scope="ALL_FIELDS", sample_ratio=1, discover_items="CHINA_PHONE_NUM,EMAIL",replace_items="CHINA_PHONE_NUM")
加工结果:
{
"NON_sensitive_field":"hello world",
"SENSITIVE_FLAGS":"CHINA_PHONE_NUM,EMAIL",//检测到了电话号码和邮件两种敏感信息
//遮盖了电话号码
"sensitive_field1":"CLS log 189****2829 my car JTJHT00W274025559 www.tencent.com CLS数据加工",
"sensitive_field2":"etl@tenctent.com "
}

敏感检测项说明:

敏感信息项
描述
例子
正则公式
遮盖结果
CHINA_PHONE_NUM
中国手机号
13123456789
(1\\\\d{2})(\\\\d{4})(\\\\d{4})
139****1234
EMAIL
邮箱
abcd@nio.com
([A-Za-z0-9._%+-]+)(@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,})
***@nio.com
CHINA_IDCARD
中国身份证
420101199004135043
(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|[7-9]1)\\\\d{4}((18|19|20)\\\\d{2}((0[1-9])|(1[0-2]))((0[1-9]|1\\\\d|2[0-8])|(1[0-2](29|30)))|(1[013-9]|2[0-35-9])31)\\\\d{3}[0-9Xx]
420101****5043
ADDR
中文地址
北京市海淀区北三环西路43号
((.{1,6}?(省|市|自治区|自治州|县|区|镇|乡))){1,3}((.{1,6}(路|街|里|街道|村|屯|组|小区|大厦|号|广场))){1,3}((.{1,6}(号楼|单元|层|室|户|号|房))|(\\\\d+-\\\\d+-\\\\d+)){0,3}
全部遮盖为****
DEBIT_CARD
借记卡
6225092716776464882
(62\\\\d{5,11})(\\\\d{6})
6225092716776****
CREDIT_CARD
信用卡
4539138994741478
([1-9]\\\\d{3}[\\\\s-]?\\\\d{4}[\\\\s-]?\\\\d{4}[\\\\s-]?)(\\\\d{4})
453913899474***
CHINA_PASSPORT
中国护照
G86067430
((1[45]\\\\d{7})|([P|p|S|s]\\\\d{7})|([S|s|G|g|E|e]\\\\d{8})|([Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\\\\d{8})|([H|h|M|m]\\\\d{8,10}))
全部遮盖为****
MACADDR
Mac 地址
06-06-06-aa-bb-cc
([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})
06-06-06-aa-****cc
IP
Ip 地址
120.32.23.137
((?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
120.32.23.***
DOMAIN
域名
www.abc123.com
((\\\\w|(\\\\w[\\\\w-]{0,86}\\\\w))\\\\.(\\\\w|(\\\\w[\\\\w-]{0,73}\\\\w))\\\\.((\\\\w{2,12}\\\\.\\\\w{2,12})|(\\\\w{2,25})))|((\\\\w|(\\\\w[\\\\w-]{0,162}\\\\w))\\\\.((\\\\w{2,12}\\\\.\\\\w{2,12})|(\\\\w{2,25})))
不提供遮盖功能
LOCATION
经纬度
31.886551,120.443934
[\\\\-\\+]?0(\\.\\d{4,10})|([1-9](\\d)?)(\\.\\d{4,10})|1[0-7]\\d{1}(\\.\\d{4,10})|180\\.0{1,10}
不提供遮盖功能
VIN
车架号
LJ1EEAUU8J7700492
([A-HJ-NPR-Z\\\\d]{10})([A-HJ-NPR-Z\\\\d]{7})
LJ1EEAUU8J****
plate_number
车牌号
京 N5J980
[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]
不提供遮盖功能
NAME
名字
日志字段名为:姓名
字段名:["real_name","family_name","last_name","姓名","名字","用户名", "收件人","recv_person", "receive_person"]
全部遮盖为****
password
密码
日志字段名为:password
字段名:["password", "passwd", "secret", "pass", "密码", "凭证"]
全部遮盖为****
token
token
日志字段名为:token
字段名 :["token", "account_key", "api_key", "授权码"]
全部遮盖为****

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈