【问题标题】:Regex - match data between nth space and stop at nth space正则表达式 - 在第 n 个空格之间匹配数据并在第 n 个空格处停止
【发布时间】:2019-03-07 15:52:35
【问题描述】:

我正在尝试在日志收集工具中使用正则表达式来捕获/解析事件日志数据、windows 和 linux。我似乎找不到一个正则表达式来告诉我如何仅捕获第 n 个空格之间的数据并在下一个第 n 个空格之后停止匹配。

例如:

<11>Mar 7 09:55:54 blahblah blahblahblah textiwant blahblahblahblah

如何只捕获文本?我意识到我可以通过 (\S+ \S+ \S+ \S+ \S+) 到达 textiwant,但我很困惑如何只保留 textiwant,之前什么都没有,之后什么都没有。

谢谢!

【问题讨论】:

  • 只捕获与您的单词匹配的\S

标签: regex parsing logging syslog event-id


【解决方案1】:

利用捕获组和锚点:

^(?:\S+\s+){5}(\S+)

a demo on regex101.com

【讨论】:

  • 可以缩短为^(?:\S+ ){5}(\S+)
  • 由于某种原因,这个在我的系统中不起作用,但下面的一个可以工作。我知道这应该可行,但我假设我的系统上有一些限制正在解释正则表达式?
  • 可能是开头的锚。尝试删除^
  • 可能是因为在 3 月和 7 日之间实际上有 2 个空格.. 3 月 7 日
  • 简的原始建议应该考虑到这一点,但我缩短的建议没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2014-06-26
  • 2014-05-14
相关资源
最近更新 更多