Regex LogMX正则表达式解析器出现问题

Regex LogMX正则表达式解析器出现问题,regex,logparser,log-viewer,logmx,Regex,Logparser,Log Viewer,Logmx,我们正在使用LogMX日志查看器来监控我们的应用程序日志,使用正则表达式解析器 每次日志消息包含“-”字符时,LogMX都不会像预期的那样解析日志事件 例如,以下日志事件: [ERROR]| com.nsoft.gmonitor.Controller-文件加载器-加载文件“C:\gmonitor\prefs.properties-Copy”时出错 解析为: 发射器:com.nsoft.gmonitor.Controller-文件加载器 线程:加载文件“C:\GMonitor\prefs.pro

我们正在使用LogMX日志查看器来监控我们的应用程序日志,使用正则表达式解析器

每次日志消息包含“-”字符时,LogMX都不会像预期的那样解析日志事件

例如,以下日志事件:

[ERROR]| com.nsoft.gmonitor.Controller-文件加载器-加载文件“C:\gmonitor\prefs.properties-Copy”时出错

解析为:

  • 发射器:
    com.nsoft.gmonitor.Controller-文件加载器

  • 线程:
    加载文件“C:\GMonitor\prefs.properties”时出错

  • 消息:
    -复制“

而不是:

  • 发射器:
    com.nsoft.gmonitor.Controller

  • 线程:
    文件加载程序

  • 消息:
    加载文件“C:\GMonitor\prefs.properties-Copy”时出错“

我们正在使用以下regexp:

\[(.*)\]\\\\\;(.*)-(.*)-(.*)-(.*)


谢谢你的帮助。

那是因为你的正则表达式很贪婪。尝试向组中添加
,以避免正则表达式的贪婪

看看这个:

\[.*\] .? (.*?) - (.*?) - (.*)

在这里,您可以看到存储在组中的正确值:


您应该改用此regexp:

\[(.*)\]\\\\(.*)-(.*)-(.*)-(.*)-(.*)

我刚刚在“发射器”和“线程”字段/组的
*
后面添加了一个
字符。 这是一个常见的正则表达式问题(不特定于LogMX):

  • *
    被称为贪婪量词:这意味着它将尝试匹配最大字符数

  • *?
    被称为不情愿的量词:这意味着它将尝试匹配最小数量的字符

您可以在(搜索“贪婪”)或中阅读更多关于此的信息

PS:如果您不想使用正则表达式来解析LogMX中的日志,您可以使用它的“Log4j/Logback模式解析器”:模式
[%p]|%c-%t-%m
将符合您的需要,默认情况下不愿意用于所有字段/组