Oniguruma 模式 - 行尾不起作用

Oniguruma pattern - end of the line will not work

我有一个名为 problem:

的字段
java.lang.NullPointerException: null\n09:56:49.712 pl.com.agora.api.client.rest.invocation.FutureCallbacksSupport {HttpClient@2052321524-scheduler} ERROR : Uri invocation failure callback failed.

我想从中排除异常

(?<exception>java(.*)Exception\z)

所以我将有字段 exception,其值为:java.lang.NullPointerException

似乎找不到可行的行尾。 \z 或 \Z 没有像我希望的那样工作。 在这里也没有找到答案:https://github.com/stedolan/jq/wiki/Docs-for-Oniguruma-Regular-Expressions-(RE.txt)

用于logstash和grok匹配:

filter {
  grok {
      match => { "message" => '%{TIME:timestamp} (\[)?(%{DATA:logger})?(\])? \{%{DATA:thread}\} %{LOGLEVEL:level} : (?<problem>(.|\r|\n)*)' }
      remove_field => ["message"]
      }
  grok {
      match => { "problem" => '(?<exception>java(.*)Exception\z)' }
  }

}

正则表达式 (?<exception>java(.*)Exception\z) 将搜索以下内容:

  1. 单词java
  2. 任何内容,包括空字符串 (.*)
  3. 单词Exception
  4. 输入结束\z

但是,输入的末尾没有单词"Exception" (\z)。在 "Exception" 和输入结尾之间还有其他内容。所以你也必须匹配这个额外的输入。它可能很简单:

(?<exception>java(.*)Exception).*\z

这将分为:

  1. 单词java
  2. 任何内容,包括空字符串 (.*)
  3. 单词Exception
  4. 任何内容,包括空字符串 (.*)
  5. 输入结束(\z)

你需要哪个捕获括号取决于你想做什么。