【问题标题】:Regex find strings between colon正则表达式查找冒号之间的字符串
【发布时间】:2014-10-16 11:08:22
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你的预期输出是什么?
  • 我需要一个正则表达式来查找第二个和第三个“:”之间的子字符串,一个用于第三个和第四个之间的子字符串。“:”和一个用于最后一个“:”后面的子字符串/跨度>
  • @tpnx 你的意思是regex101.com/r/wT9qK8/2 ?
  • 不,我需要 4 个正则表达式“字符串”,其中每个正则表达式代表你的一个匹配项

标签: regex graylog2


【解决方案1】:

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

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

RegEx Demo


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

正则表达式 1:

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

正则表达式 2:

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

正则表达式 3:

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

正则表达式 4:

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

【讨论】:

  • 很好,但是 graylog 只使用第一个匹配项。所以我需要为每个子字符串一个正则表达式,但我不知道如何“找到”第二个“:”从那里开始
  • 您有graylog2 regex 的文档吗?应该有一些 global 开关或findAll 类型的功能。
  • 我想创建 4 个提取器,每个子字符串一个,所以我需要 4 个正则表达式,每个子字符串一个
  • 但有问题你写道:I need single regex
  • 我认为我的英语不好,我的意思是每个子字符串都有 1 个(单个)正则表达式。我的坏
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多