как сопоставить URI в splunk

#regex #splunk

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

Вопрос:

Есть какой-то домен.
Хост: random_doamin:8080
Хост: random_domain / привет
Хост: random_domain
Хост: http://random_doamin:8080
Ведущий: https://random_domain/hello

И это запрос, который я использовал для тестирования в splunk.

 index=notable earliest=-1h | head 5
| eval domain1="Host: random_doamin:8080"
| eval domain2="Host: random_domain/hello"
| eval domain3="Host: random_domain"
| eval domain4="Host: http://random_doamin:8080"
| eval domain5="Host: https://random_domain/hello"
| eval isMalicious = mvappend('domain1', 'domain2', 'domain3', 'domain4', 'domain5')
| mvexpand isMalicious
| dedup isMalicious
| rex field=isMalicious "Host: (http://|https://)?(?<random_domain>.*(:|/)?)" 
| table isMalicious random_domain
  

Вот результат для запроса.

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

Я хочу извлечь только random_domain
, если это невозможно, то, по крайней мере, я хочу извлечь, как показано ниже
«random_domain:» или «random_domain /»

Мне нужна ваша помощь. Заранее спасибо за ваш вид.

Ответ №1:

Использовать

 Host: (?:https?://)?(?<random_domain>[^:/s] )
  

Смотрите Доказательство.

Объяснение

 --------------------------------------------------------------------------------
  Host:                    'Host: '
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    http                     'http'
--------------------------------------------------------------------------------
    s?                       's' (optional (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    ://                      '://'
--------------------------------------------------------------------------------
  )?                       end of grouping