GROK или регулярное выражение, чтобы получить окончание имени файла with.jar

#regex #logstash #logstash-grok

#регулярное выражение #logstash #logstash-grok

Вопрос:

Я хочу проанализировать поле в logstash, используя Grok или Regex. Я хочу получить все имена процессов, заканчивающиеся на .jar и поместить их в поле с именем «подпроцесс» Пример данных примерно так

 /opt/java/jdk1.8.0_241/bin/java -server -Xms256m - Xms512m -XX:CompileThreshold=7000 -cp /opt/fmw/middleware/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpat
  

До сих пор я пытался следовать

 .*.jar$          #This works on regex101.com but not in logstash
(?<subprocess>[$.*w.jar$])    #This only gives j in subprocess
  

Любой шаблон регулярных выражений, который может извлекать «weblogic-launcher.jar «и поместить его в поле «подпроцесс» было бы весьма полезно.

Спасибо

Комментарии:

1. Я обновил свой вопрос, спасибо

2. Попробуйте (?<subprocess>[^/] .jar) или (?<subprocess>[^/] .jar)b , см. regex101.com/r/idOV1Z/1

3. Большое спасибо Виктору — это сработало, но у меня есть еще один журнал, который выглядит примерно так /opt/java/jdk1.8.0_241/bin/java -server -Xms256m - Xms512m -XX:CompileThreshold=7000 -cp /opt/fmw/middleware/wlserver/server/lib - jar process.jar -Dlaunch.use.env.classpat : В этом случае регулярное выражение получает все до .jar , но я хочу, чтобы оно тянуло только process.jar К вашему сведению, я тестирую его на отладчике Kibana, я пробовал (?<subprocess>[^/] .jar)b , но это не сработало, не могли бы вы объяснить, как это работает? Я пытался

4. Также что, если в каком-то журнале есть несколько процессов .jar в одной строке

5. Похоже, тоже работает — regex101.com/r/idOV1Z/2

Ответ №1:

Вы можете использовать

 /[^/]*?(?<subprocess>[^/s] .jar)
  

Смотрите демонстрацию регулярных выражений.

Подробные сведения

  • / / символ
  • [^/]*? — ноль или больше, но как можно меньше символов, отличных от /
  • (?<subprocess>[^/s] .jar) — Группа «подпроцесс»: один или несколько символов, отличных от / и пробелов, а затем .jar строка.