#regex #splunk
#регулярное выражение #splunk
Вопрос:
У меня есть три типа журналов, которые я хотел бы проанализировать:
Сообщение №1: Ввод имени пользователя (random@somewhere.org ) с длиной (253), созданной для мобильных устройств aa: aa: aa:aa:aa:aa
Ожидаемые совпадения:
- random@somewhere.org
- aa: aa:aa:aa:aa:aa
Сообщение # 2: удалена запись имени пользователя (hello) для мобильных устройств aa: aa: aa:aa:aa:aa:aa
Ожидаемые совпадения:
- здравствуйте
- aa: aa:aa:aa:aa:aa
Сообщение № 3 Гостевой пользователь, вошедший в систему с учетной записью пользователя (randomnonexistentuser) с MAC-адресом aa: aa: aa:aa:aa:aa:aa, IP-адрес 127.0.0.1.
Ожидаемые совпадения:
- randomnonexistentuser
- aa: aa:aa:aa:aa:aa
- 127.0.0.1
Пока у меня есть это регулярное выражение для идентификации MAC-адресов (помеченных как мобильные в двух из трех примеров): https://regex101.com/r/qFE95M/14
У меня также есть это регулярное выражение…
(?P<IP_address>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})
…чтобы найти IP-адрес. Однако я не уверен, как сделать только эту именованную группу необязательной и связать ее с частью MAC-адреса.
Наконец, у меня есть это регулярное выражение…
^[^(n]*((?P<user_account>[^)] ))
… чтобы найти имена пользователей (могут быть адреса электронной почты, отдельные слова и т.д.). Но опять же, я не уверен, как связать это с двумя другими именованными группами.
Как мне согласовать эти три соответствия вместе, чтобы он нашел их в трех сообщениях выше?
Комментарии:
1. Если порядок этих трех сведений всегда будет одинаковым, то вы можете использовать одно регулярное выражение, где вы можете сделать каждую часть необязательной, в противном случае будет лучше использовать отдельное регулярное выражение для поиска каждой из этих сведений.
2. это хорошая идея — спасибо!
Ответ №1:
что-то вроде этого должно предоставить вам все в именованной группе: https://regex101.com/r/qFE95M/15
Комментарии:
1. спасибо — это определенно работает. есть ли у вас какие-либо предложения, чтобы сделать его менее зависимым от слов, предшествующих каждому элементу?
2. что ж, если вы можете дать мне еще несколько примеров данных, я могу сделать регулярное выражение более надежным. Проблема с именем пользователя в скобках заключается в том, что в строке может быть больше скобок. А что, если кто-то войдет в систему с именем пользователя 253? Итак, если вы можете предоставить мне больше данных, я могу сузить регулярное выражение, чтобы оно соответствовало вашим потребностям.