исключения регулярных выражений в Java исключения ", вызванных:"


Я пытаюсь захватить исключение Java anem из файла журнала, но я хотел бы исключить строку " вызвано:", используя версию регулярных выражений Oniguruma 6.0.0:

^.+Exception

Возвращает:

"Caused by: java.nio.file.NoSuchFileException"

Как я могу написать регулярное выражение, которое захватывает имя исключения, но игнорирует строку "Caused by:" перед ним. Это будет использоваться в Grok Logstash

1 2

1 ответ:

Вы можете использоватьзахват со следующим шаблоном:

^Caused\s*by:\s*(?<exception>[\w.]+)

Именованная группа захвата будет соответствовать и захватыватьв группу "исключение" (создание переменной с тем же именем) 1+ слово (буквы, цифры или символы подчеркивания) или . символы.

Отвечая на ваш вопрос, чтобы проверить и потребовать что-то, но исключить его из матча, вы можете использовать lookarounds:

(?<=^Caused by: ).*?Exception

См этот Rubular демо. А ниже приведен тест на https://grokdebug.herokuapp.com/:

Введите описание изображения здесь