我想从日志文件捕获Java异常风险,但我想排除“由...引起:”字符串使用Oniguruma正则表达式版本6.0.0:正则表达式java异常排除“导致:”
^.+Exception
回报:
"Caused by: java.nio.file.NoSuchFileException"
我如何可以写一个正则表达式捕获该异常名称,但忽略了“产生的原因:”在它前面的字符串。这将在神交Logstash使用
我想从日志文件捕获Java异常风险,但我想排除“由...引起:”字符串使用Oniguruma正则表达式版本6.0.0:正则表达式java异常排除“导致:”
^.+Exception
回报:
"Caused by: java.nio.file.NoSuchFileException"
我如何可以写一个正则表达式捕获该异常名称,但忽略了“产生的原因:”在它前面的字符串。这将在神交Logstash使用
您可以使用捕捉有以下模式:
^Caused\s*by:\s*(?<exception>[\w.]+)
命名捕获组的(?<exception>[\w.]+)
将捕获匹配和成组“异常”(创建与变量相同的名称)1+字(字母,数字或下划线)或.
字符。
回答你的问题,检查和需要的东西,但在比赛中排除,您可以使用lookarounds:
(?<=^Caused by:).*?Exception
嗨Wiktor感谢您的解决方案!我在grok调试器中生成了2个值,出于某种原因,出现和不出现由字符串引起的值。 { “异常”: [ “产生的原因:java.nio.file.NoSuchFileException” ], [ “java.nio.file.NoSuchFileException” ] ] } – Arturski
如果你使用'( ??
仍然返回2个值,但都是正确的。 { “异常”: [ “java.nio.file.NoSuchFileException” ], [ “java.nio.file.NoSuchFileException” ] ] } – Arturski
又是怎么回事'^(*产生的原因:?!)+ Exception'?它应该工作。 –
不能正常工作,请在http://rubular.com/r/JFI3pukx4y上测试 – Arturski
它正在工作,因为它与您所写的*引起的行不匹配:*我试图捕获Java异常没有“引起来的:”字符串*的日志文件。如果不是你真的在做什么,请更新问题。 –