正则表达式组名称前缀多个选项

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”:除 ,;.
  • 之外的一个或多个字符