исключения регулярных выражений в Java исключения ", вызванных:"
Я пытаюсь захватить исключение Java anem из файла журнала, но я хотел бы исключить строку " вызвано:", используя версию регулярных выражений Oniguruma 6.0.0:
^.+Exception
Возвращает:
"Caused by: java.nio.file.NoSuchFileException"
Как я могу написать регулярное выражение, которое захватывает имя исключения, но игнорирует строку "Caused by:" перед ним. Это будет использоваться в Grok Logstash
1 ответ:
Вы можете использоватьзахват со следующим шаблоном:
^Caused\s*by:\s*(?<exception>[\w.]+)
Именованная группа захвата будет соответствовать и захватыватьв группу "исключение" (создание переменной с тем же именем) 1+ слово (буквы, цифры или символы подчеркивания) или
.
символы.Отвечая на ваш вопрос, чтобы проверить и потребовать что-то, но исключить его из матча, вы можете использовать lookarounds:
(?<=^Caused by: ).*?Exception
См этот Rubular демо. А ниже приведен тест на https://grokdebug.herokuapp.com/: