【发布时间】:2015-06-28 17:23:15
【问题描述】:
我有特定的日志消息,我想将其解析为组。如果我的字符串更具体,我想制作一个替代版本。
我的日志:
18:48:24:284 => [DEBUG] [xxx.yyy.zzz] [8] Message1
18:48:24:671 => [INFO] [uuu.www.aaa] [8] Method: 'ReturnType MethodName(MethodParameter)'. Line: ~30. Message2
我写了以下正则表达式:
(?<timestamp>\d+:\d+:\d+:\d+.*)\s+=>\s+\[(?<level>\w+)\]\s+\[(?<emmiter>.*)\]\s+\[(?<thread>\d+)\]\s+(?<message>.*)
它将这些消息解析为特定的组:
timestamp: 18:48:24:284
level: DEBUG
emmiter: xxx.yyy.zzz
thread: 8
message: Message1
timestamp: 18:48:24:671
level: INFO
emmiter: uuu.www.aaa
thread: 8
message: Method: 'ReturnType MethodName(MethodParameter)'. Line: ~30. Message2
但现在我想再添加 2 个组,以防它们存在:方法和行
所以,我想得到这样的结果:
timestamp: 18:48:24:284
level: DEBUG
emmiter: xxx.yyy.zzz
thread: 8
method:
line:
message: Message1
timestamp: 18:48:24:671
level: INFO
emmiter: uuu.www.aaa
thread: 8
method: ReturnType MethodName(MethodParameter)
line: ~30
message: Message2
你能帮我解决这个问题吗?我所做的一切都会导致仅正确解析 Line1 或仅正确解析 Line2,但我想用一个正则表达式解析它们。
【问题讨论】:
-
你在运行哪个语言?你的尝试在哪里?
-
您使用哪种开发环境/语言?请为您的问题添加适当的标签!另外,请提供您已经编写的正则表达式!
-
我在外部应用程序中使用它。我假设它是java。我已经用我目前的正则表达式状态更新了帖子
-
好的!那是什么应用程序?
-
@SQLPolice 我正在为 LogMX 应用程序编写正则表达式解析器