构建 RegEx 表达式

在 IBM® Cloud Logs中,可以通过在对数据建立索引以进行搜索之前应用 RegEx 表达式,使用解析规则来控制数据的结构。

IBM Cloud Logs 使用 Golang 版本。RegEx

RegEx 模式区分大小写。

量词

定量词
量化器 匹配项
* 0 或先前字符或序列的多个匹配项。
? 0 或 1 与先前字符或序列匹配。
+ 1 或先前字符或序列的多个匹配项。
{N} 正好与前一个字符的 N 倍匹配。
{N,} 与前一个字符匹配 N 次或更多次。
{N,Z} N 与 Z 之间的匹配是前一个字符的 N 与 Z 之间的匹配。

字符

字符
字符 匹配项
. 与任意单个字符匹配。
.* 匹配任何内容。
\d 与 1 个位数匹配。
\d* 匹配 N 个数字。
\D 与除数字以外的任何符号匹配。
\w 与任何字母,数字或下划线匹配。
\W 匹配不是字母,数字或下划线的任何字符。
\s 与空格字符匹配。
\S 与空格,制表符,换行符或回车符以外的任何字符匹配。
\s* 匹配 N 个空格字符。
\S 与任何不是空格的字符匹配。
\S* 匹配非空格的 N 个字符。

锚点

锚点
锚点 匹配项
\b 定义字边界。
^ 与字符串或行的开头相匹配。
$ 匹配字符串或行的结尾。

分组

分组
分组 匹配项
[ ] 表示一组字符。
( ) 用于对模式进行分组。
[abcd...] 与方括号中包含的字符的 1 字符匹配。
[a-z] 与 a 到 z 范围内的 1 字符匹配。
[^a-z] 匹配不在 a 到 z 范围内的 1 字符。
[....]+ 与方括号中列出的字符中的 1 个或多个字符匹配。
[....]? 与方括号中列出的那些字符的 1 或 0 字符匹配。
[^"]* 匹配除双引号外的 N 个字符。
[^"\s]* 与 N 个字符匹配,但双引号和空格除外。
[^.]* 匹配 0 或更多非点。

指定的捕获组

您可以在 RegEx 表达式中使用指定的捕获组,以根据日志记录中的现有数据定义新字段。

捕获组的格式如下所示:

(?P<fieldName>RegularExpression)

位置

  • ?P 表示捕获组的开始。

  • 必须将 fieldName 设置为要添加的字段的名称。

  • RegularExpression 表示定义新字段值的 RegEx。

    RegEx 不必与整个日志匹配。