Regex PCRE извлечение поля - PullRequest
       9

Regex PCRE извлечение поля

0 голосов
/ 05 сентября 2018

Я пытаюсь извлечь пользовательское поле из следующих событий, используя регулярное выражение.

Пн. Авг. 06 2018 19:35:34 whostname sshd [4191]: Сбой пароля для резервного копирования с порта 27.96.191.11 3558 ssh2

Пн. Авг. 06 2018 19:35:59 whostname sshd [5625]: сбой пароля ни для кого из порта 27.96.191.11 1574 ssh2

Пн. Авг. 06 2018 19:36:07 whostname sshd [3840]: Сбой пароля для недопустимого пользовательского универа из порта 27.96.191.11 4916 ssh2

Пн. Авг. 06 2018 19:36:26 whostname sshd [66863]: pam_unix (sshd: сеанс): сеанс, открытый для пользователя michael пользователем (uid = 0)

Пн. Авг. 06 2018 19:36:26 whostname sshd [1573]: сбой пароля для недопустимого пользователя harry из порта 27.96.191.11 1025 ssh2

Для первого события пользовательское поле - «резервное копирование», для второго - «никто», для третьего - «уни», 4 - «майкл» и для 5 - «гарри»

Я пробовал другое регулярное выражение без успеха

Например: https://regex101.com/r/52GMc4/1

Ваша помощь очень ценится

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Возможно, не так элегантно, но вы найдете имя пользователя, захваченное во второй группе:

/(password for|invalid user|opened for user) (\w+)/gi

regex101

0 голосов
/ 05 сентября 2018

Вам также необходимо проверить возможность появления слов user и invalid user перед вашим именем пользователя. Следующее соответствует всем вашим тестовым строкам

/for(?:\s(?:invalid\s)?user)?\s+(?<User>\w+)/
...