赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据加工
  6. 数据加工(旧版)
  7. 数据加工语法
  8. 通用参考
  9. 正则表达式

正则表达式

  • 通用参考
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文介绍正则表达式的匹配方式以及特殊字符的转义处理。

完全匹配

正则表达式的值与字符串完全一致,则是完全匹配。例如1234与\d+完全匹配。

有些函数支持部分匹配,您可以在开头与结尾添加^与$将部分匹配的场景变成完全匹配。例如正则表达式为^正则表达式$。更多信息,请参见正则表达式操作。

不同函数的匹配模式如表格所示。

分类

函数

匹配模式

全局操作函数

e_regex

部分匹配

e_keep_fields

完全匹配

e_drop_fields

完全匹配

e_rename

完全匹配

e_kv

部分匹配

表达式函数

e_match

参数控制,默认为完全匹配。

e_search

部分匹配

regex_select

部分匹配

regex_findall

部分匹配

regex_match

参数控制,默认为部分匹配。

regex_replace

部分匹配

regex_split

部分匹配

匹配模式示例。

  • regex_match("abc123", r"\d+"):匹配。默认为部分匹配模式。

  • regex_match("abc123", r"\d+", full=True):不匹配。设置了完全匹配模式。

  • regex_match("abc123", r"^\d+$"):不匹配。等同于完全匹配模式。

  • e_search(r'status~="\d+"'):根据status字段的值匹配。等同于部分匹配模式。

  • e_search(r'status~="^\d+$"'):根据status字段的值匹配。等同于完全匹配模式。

字符转义

正则表达式中可能会包含特殊字符,如果需要获取这些字符本身的含义,就需要进行转义。 您可以通过以下方法进行转义:

  • 通过反斜线(\)进行转义

    更多信息,请参见字符转义。

  • 通过str_regex_escape函数进行转义。

    • 例如e_drop_fields(str_regex_escape("abc.test"))表示丢弃字段abc.test。

    • 例如e_drop_fields("abc.test")则表示丢弃符合abc?test的字段,其中半角问号(?)表示任意字符。

分组

分组是将需要重复的表达式用半角圆括号()包裹起来,然后对这个表达式进行重复引用。以下示例为分组和不分组的区别:

"""
处理前日志为:
SourceIP: 192.0.2.1
处理后日志为:
SourceIP: 192.0.2.1
ip: 192.0.2.1
"""
# 不分组:
e_regex("SourceIP",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
# 分组:
e_regex("SourceIP", "\d{1,3}(.\d{1,3}){3}", "ip")

捕获组

捕获组会将捕获到的文本内容缓存在内存中,可以通过反向引用在其他表达式中使用。形式上捕获组的半角圆括号()中不是以?:开头。

默认情况下,每个捕获组会自动拥有一个编号。从左向右,以分组的左括号为标志,第一个出现的分组的编号为1,第二个为2,以此类推。例如,以下示例拥有3个分组:

(\d{4})-(\d{2}-(\d{2}))

1     1 2      3     32

如果正则表达式中同时存在普通分组和命名分组,那么分组的编号规则是先对普通捕获组进行编号,再对命名捕获组进行编号。日志服务支持在表达式或程序中直接引用自定义的捕获组组名。

非捕获组

非捕获组不会将匹配到的文本内容缓存到内存中,形式上非捕获组的半角圆括号()中以?:开头。

例如您要查找program和project,则正则表达式可以为pro(gram|ject)。如果您不希望将正则表达式匹配的内容缓存到内存中,则可以使用pro(?:gram|ject)进行非捕获匹配。

说明

(?:x)表示匹配x但是不缓存匹配项,可以定义与正则表达式运算符一起使用的子表达式。

相关文章

标准编码格式 2025-04-22 10:54

本文列举了日志服务中支持的标准编码格式。

查询字符串语法 2025-04-22 10:54

查询字符串语法是SLS DSL中用于快速过滤数据的语法,可以简化条件判断。本文介绍查询字符串的通用语法规则。 函数列表

字段提取模式 2025-04-22 10:54

本文介绍函数中字段提取模式参数的取值以及含义。 相关函数 以下为使用字段提取模式mode参数的函数列表及其参数默认值。

正则表达式 2025-04-22 10:54

本文介绍正则表达式的匹配方式以及特殊字符的转义处理。 完全匹配 正则表达式的值与字符串完全一致,则是完全匹配。例如

GROK模式参考 2025-04-22 10:54

GROK是一种采用组合多个预定义的正则表达式,用来匹配分割文本并映射到关键字的工具。通常用来对日志数据进行处理。本文档主要介绍GROK的模式说明以及常用语法。 GROK模式及说明如下表所示。

JMES语法 2025-04-22 10:54

本文主要介绍JMES的常用语法和示例。 JMES是一个增强型的JSON查询计算语言,不仅可以对JSON数据进行提取,还可以做计算与转换。关于JMES语法的详细介绍请参见JMES Tutorial。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号