Запрос: Помощь с запросом Splunk -Rex

#regex #splunk #rex

#регулярное выражение #splunk #rex

Вопрос:

У меня возникли некоторые проблемы с запросом rex, в котором однозначная дата выдает неверный результат, но двузначная дата дает правильный результат.

Это записи журнала, которые я запрашиваю:

 Mar  7 14:24:29 10.52.176.215 Mar  7 12:24:29 963568 - Melbourne details-cable-issue - vdvfvfv

Mar 20 09:52:55 10.52.176.215 Mar 20 07:52:55 963569 - Brisbane cable-issue
  

И это запрос:

 ^(?:[^ n]* ){7}(?P<extension>[^ ] )[^-n]*-s (?P<location>w )
  

Для записи от 7 марта мой запрос дает мне расширение группы «7», в то время как моя запись от 20 марта дает мне расширение группы «963569», что правильно.

Может ли кто-нибудь пролить некоторый свет на мой запрос, подтверждающий однозначную и двузначную дату? #7 против 20

Спасибо всем 🙂

Ответ №1:

В первой строке есть несколько последовательных пробелов (они выглядят как пробелы для заполнения), и поскольку вы сопоставляете только один пробел внутри (?:[^ n]* ) , вы получаете несоответствия.

Я предлагаю сопоставить 1 или более пробелов в этой первой группе и скорректировать ограничивающий квантификатор:

 ^(?:[^ n]*  ){5}(?P<extension>[^ ] )[^-n]*-s (?P<location>w )
            ^  ^
  

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