来自syslog源的Windows“消息”正则表达式

时间:2019-06-17 07:39:26

标签: regex windows syslog

我将Windows日志汇总到syslog服务器,该服务器有点混乱了格式,并且我正在尝试使用正则表达式(PCRE)对其进行重新格式化,以便可以提取一些键/值对

我本人可以使用正则表达式,但是我坚持每个“消息”部分都有几个“标头”,它们在其下面定义了键/值对。

一个例子是: An attempt was made to access an object. Subject: Security ID: NT AUTHORITY\SYSTEM Account Name: NAME$ Account Domain: DOMAIN Logon ID: 0x3e7 Object: Object Server: Security Object Type: File Object Name: Z:\PATH\PATH\PATH\file.log Handle ID: 0x9b0 Process Information: Process ID: 0xa84 Process Name: C:\Program Files\PROGRAM\EXECUTABLE.exe Access Request Information: Accesses: ReadData (or ListDirectory) Access Mask: 0x1

标题为主题,对象和过程信息。

我似乎卡住的是这里的唯一定界符,是\ s,而不管标头或对。

这使我接近了。 \s([^:\s]+)\:[\s]([^\s]*),但仅捕获多字标题或键中的第一个字。

/ s是唯一的分隔符,这可能吗?

1 个答案:

答案 0 :(得分:0)

如果只希望这些标题名称,则可以使用alternation并列出单词边界\b之间的单词。

请注意,您不必转义:,也可以在不带方括号的情况下编写单个\s

\b(Process Information|\S+)\b:\s(\S*)

说明

  • \b字边界
  • (捕获组1
    • Process Information|\S+匹配任何列出的
  • )关闭捕获组
  • \b:\s匹配单词边界,:和空格字符
  • (\S*)捕获第2组匹配0+倍的非空白字符

查看regex demo