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)
将搜索以下内容:
- 单词
java
- 任何内容,包括空字符串 (
.*
)
- 单词
Exception
- 输入结束
\z
但是,输入的末尾没有单词"Exception" (\z
)。在 "Exception" 和输入结尾之间还有其他内容。所以你也必须匹配这个额外的输入。它可能很简单:
(?<exception>java(.*)Exception).*\z
这将分为:
- 单词
java
- 任何内容,包括空字符串 (
.*
)
- 单词
Exception
- 任何内容,包括空字符串 (
.*
)
- 输入结束(
\z
)
你需要哪个捕获括号取决于你想做什么。
我有一个名为 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)
将搜索以下内容:
- 单词
java
- 任何内容,包括空字符串 (
.*
) - 单词
Exception
- 输入结束
\z
但是,输入的末尾没有单词"Exception" (\z
)。在 "Exception" 和输入结尾之间还有其他内容。所以你也必须匹配这个额外的输入。它可能很简单:
(?<exception>java(.*)Exception).*\z
这将分为:
- 单词
java
- 任何内容,包括空字符串 (
.*
) - 单词
Exception
- 任何内容,包括空字符串 (
.*
) - 输入结束(
\z
)
你需要哪个捕获括号取决于你想做什么。