正则表达式组名称前缀多个选项
Regex Group Name prefix multiple options
我正在为我们的 SIEM 执行正则表达式提取以解析日志。我正在使用 PCRE2。
在这些日志中,我遇到了这个问题:我必须提取一个前面可以有多个选项的字段,并且我只想使用一个组名。
让我举个例子更清楚。
SSH 连接可以以这种形式出现在我们的日志中:
UserType=SSH,
我知道一个简单的正则表达式可以捕获这个:
UserType=(?<app>.*?),
但是,与此同时,SSH 可能会出现另一个“前缀”:
ACCESS TYPE:SSH;
可以通过以下方式捕获:
ACCESS\sTYPE:(?<app>.*?);
现在,因为逻辑字段是相同的(SSH 协议)并且我想在每种情况下都将其映射到组名“app”下,有没有办法将以前的值放入 OR 中并使用相同的组名?
最终的结果是这样的:
(UserType=) OR (ACCESS TYPE:) <field_value_here>
您可以使用
(?:UserType=|ACCESS\sTYPE:)(?<app>[^,;]+)
见regex demo。 详情:
(?:UserType=|ACCESS\sTYPE:)
- UserType=
或 ACCESS
+ 空格 + TYPE:
(?<app>[^,;]+)
- 组“app”:除 ,
和 ;
. 之外的一个或多个字符
我正在为我们的 SIEM 执行正则表达式提取以解析日志。我正在使用 PCRE2。 在这些日志中,我遇到了这个问题:我必须提取一个前面可以有多个选项的字段,并且我只想使用一个组名。
让我举个例子更清楚。
SSH 连接可以以这种形式出现在我们的日志中:
UserType=SSH,
我知道一个简单的正则表达式可以捕获这个:
UserType=(?<app>.*?),
但是,与此同时,SSH 可能会出现另一个“前缀”:
ACCESS TYPE:SSH;
可以通过以下方式捕获:
ACCESS\sTYPE:(?<app>.*?);
现在,因为逻辑字段是相同的(SSH 协议)并且我想在每种情况下都将其映射到组名“app”下,有没有办法将以前的值放入 OR 中并使用相同的组名?
最终的结果是这样的:
(UserType=) OR (ACCESS TYPE:) <field_value_here>
您可以使用
(?:UserType=|ACCESS\sTYPE:)(?<app>[^,;]+)
见regex demo。 详情:
(?:UserType=|ACCESS\sTYPE:)
-UserType=
或ACCESS
+ 空格 +TYPE:
(?<app>[^,;]+)
- 组“app”:除,
和;
. 之外的一个或多个字符