首页 > 解决方案 > 无法解析多行正则表达式模式

问题描述

我们正在尝试在 tomcat 日志上解析多行格式,如果模式不匹配,它们将出现在单独的行中

这是我运行的正则表达式模式 “<code>^(?<time>[0-9][^ ]* [^ ]* [^ ]*) (?<severity>[^ ]*) (?<msg >.*)”</p>

如何解析可以在一行中获取整个味精的多行?

2021-06-28 10:51:01,175 EDT ERROR [MFTAgentBootstrap] {main} For input string: "" java.lang.NumberFormatException: For input string: ""
2021-06-28 10:48:49,781 EDT ERROR [MFTAgentBootstrap] {main} For input string: "" java.lang.NumberFormatException: For input string: ""
2021-06-28 10:48:49,781 EDT ERROR [MFTAgentBootstrap] {main} For input string: "" java.lang.NumberFormatException: For input string: ""
         at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
         at java.lang.Integer.parseInt(Integer.java:592)
         at java.lang.Integer.parseInt(Integer.java:615)
             at com.linoma.dpa.DPASettings.loadSettings(DPASettings.java:2050)
2021-06-28 10:51:01,175 EDT ERROR [MFTAgentBootstrap] {main} For input string: "" java.lang.NumberFormatException: For input string: ""
2021-06-28 10:51:01,175 EDT ERROR [MFTAgentBootstrap] {main} For input string: "" java.lang.NumberFormatException: For input string: ""

标签: regex

解决方案


(?<msg>)只要此正则表达式沿途找到以空格开头的行,它就会继续捕获该组。

^(?<time>[0-9][^ ]* [^ ]* [^ ]*) (?<severity>[^ ]*) (?<msg>.*(?:\r?\n +.*)*)

REGEX101 DEMO


推荐阅读