正则表达式在冒号之间找到字符串

时间:2014-10-16 11:08:22

标签: regex graylog2

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

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

并希望获得":"之间的字符串。和最后一个":"

之后的最后一个字符串

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

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

1 个答案:

答案 0 :(得分:3)

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

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

RegEx Demo


更新:如果您确实需要4种不同的4种正则表达式,请使用:

RegEx 1:

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

RegEx 2:

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

RegEx 3:

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

RegEx 4:

(?<=: )([^:]+)$