#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