当前位置: 首页 > 知识库问答 >
问题:

正则表达式,用于从两个不同的日志条目中提取捕获组

公孙俊弼
2023-03-14

我在一个日志文件中有两种类型的日志(不同格式):

    < li >第一个日志格式:
2019-09-01 18:58:05,898 INFO  Thread: qtp1497973286-16 - com.xyz.soap
 <with additional stuff>
  <more stuff>
 <even morestuff>

时间戳:2019-09-01 18:58:05898,级别:INFO,线程:qtp1497973286-16,消息:com.xyz。肥皂

2021-03-23 23:47:38.111:ERROR::main: Logging initialized @5687ms to org.eclipse.jetty.util.log.StdErrLog
WARNING: An illegal reflective access operation has occurred
More lines here

时间戳:2021-03-23 23:47:38.111,级别:ERROR,线程:main,消息:日志…

我试图找到一个regex模式,它具有捕获组的统一输出:< code>timestamp,thread,level,message。

例如,这种模式“几乎”适用于第一组:

(?<timestamp>[^ ]* [^ ]*) (?<level>[^\s][A-Z]+)[\s]+(?<thread>\s.*) (?<message>[\s\S]*)$

我正在使用令人惊叹的regex101工具:https://regex101.com/r/AW9VKp/1

我需要找到一种模式,两种日志格式生成相同的组。

共有1个答案

丘普松
2023-03-14

确定找到了:

(?<timestamp>^\d{4}-.*\d{3})(?: |:)(?<level>[^\s][A-Z]+)(?:\s{2}Thread: |:{2})(?<thread>[^\s]+)(?: - | )(?<message>[\s\S]*)$
 类似资料:
  • 问题内容: 我正在使用Swift 3并尝试访问捕获的组。 我希望能够提取出捕获的最后两个数字(),所以如果文本为:,它将提取出。这是显示我想要的正则表达式生成器。通常,我能够提取出第8个组,但是我不知道如何在Swift 3中执行此操作。 http://regexr.com/3fh1e 问题答案: 但是我不知道如何在Swift 3中做到这一点。 当您收到来自NSRegularExpression的匹

  • 假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/

  • 我有一个带有(?:)格式的非捕获组的java正则表达式,我不明白为什么它为非捕获组提供“null”匹配。 如果我把下面的正则表达式缩短为“@te(st)(?:aa)?”用同样的非捕获组,它给出了我所期望的行为,只匹配1组和完全匹配。 参见下面的正则表达式: 结果: “@te(st)(?:aa)”的结果使用相同的代码: 第一个将非捕获组匹配为null的正则表达式是什么?

  • 在Python中,如何在非捕获组中捕获组?换句话说,如何重复包含捕获组的非捕获子模式? 例如,捕获导入字符串上的所有包名。例如,字符串: 导入熊猫、操作系统、系统 将返回“pandas”、“os”和“sys”。下面的模式捕获第一个包并到达第二个包: 从这里,我想重复捕获组并匹配以下字符的子模式,即。当我用一个非捕获组包围这个子模式并重复它时: 它不再捕捉里面的群体。

  • 我正在分析的文本包括捕获组前后以及捕获组内的星号。我确定的解析捕获组的模式基本上是:文本前的连续星号总是至少为30。类似地,最后一个单词后面的连续星号长度至少为15个字符。捕获组中的连续星号始终小于10。我遇到的问题是,我不确定如何给捕获组中的星号和组中的其他字符赋予不同的量词,但将其包含在同一匹配集中。例如: 所以基本上,我只需要捕获文本部分。星号可以存在于实际文本之前和之后(我可以稍后删除),

  • 我有一个正则表达式来从完整命令中提取脚本名。它适用于大多数情况,但不适用于示例数据中的第一行。 抽样资料 输出应该是 正则表达式不适用于第一行 https://regex101.com/r/cFjn85/1