0

我尝试正则表达式以下字符串

 : hostname: Oct 16 03:49:39.515: %BLA: message

并想要获取“:”和最后一个“:”之后的最后一个字符串之间的字符串

当我使用: (.+?):我得到hostname.

不幸的是,我无法获得Oct 16 03:49:39.515,%BLAmessage. 我需要为每个子字符串使用一个正则表达式,我不想将它们全部合二为一。

4

1 回答 1

3

由于graylog2是用 Java 编写的,我相信外观应该可以工作。试试这个正则表达式:

(?<=: )(.+?)(?=: |$)

正则表达式演示


更新:如果您真的需要 4 个组件的 4 个不同的正则表达式,请使用:

正则表达式 1:

(?<=: )(.+)(?=(?:: .+){3}[^:]*$)

正则表达式 2:

: [^:]*: (.+?)(?=: )

正则表达式 3:

: [^:]*: .+?: ([^:]+)

正则表达式 4:

(?<=: )([^:]+)$
于 2014-10-16T11:20:42.640 回答