我尝试正则表达式以下字符串
: hostname: Oct 16 03:49:39.515: %BLA: message
并想要获取“:”和最后一个“:”之后的最后一个字符串之间的字符串
当我使用: (.+?):
我得到hostname
.
不幸的是,我无法获得Oct 16 03:49:39.515
,%BLA
和 message
. 我需要为每个子字符串使用一个正则表达式,我不想将它们全部合二为一。
由于graylog2
是用 Java 编写的,我相信外观应该可以工作。试试这个正则表达式:
(?<=: )(.+?)(?=: |$)
更新:如果您真的需要 4 个组件的 4 个不同的正则表达式,请使用:
正则表达式 1:
(?<=: )(.+)(?=(?:: .+){3}[^:]*$)
正则表达式 2:
: [^:]*: (.+?)(?=: )
正则表达式 3:
: [^:]*: .+?: ([^:]+)
正则表达式 4:
(?<=: )([^:]+)$