Получение имени пользователя из журналов OpenVPN с помощью Regex - PullRequest
0 голосов
/ 10 января 2019

У меня есть следующее регулярное выражение ('([a-z]+)'|\[([a-z]+)\]), которое захватит имя пользователя joebloggs из обоих из следующих строк журнала, созданных OpenVPN в pfSense.

  • openvpn [18738]: 123.123.123.123:12345 [joebloggs] Одноранговое соединение, инициированное с [AF_INET] 123.123.123.123:50453
  • openvpn: аутентификация пользователя 'joebloggs'

Проблема в одном случае - в квадратных скобках, в другом - в кавычках.

Очевидно, это своего рода по замыслу для захвата строк в обоих форматах журнала, но в идеале я хотел бы просто захватить имя пользователя, без повязки.

Системой журналов, в которую записываются журналы pf, является Graylog2 (который использует сопоставление Java Regex) - экстрактор захватывает только первую группу захвата, поэтому она полностью инкапсулирована внутри одной.

1 Ответ

0 голосов
/ 11 января 2019

Вы можете использовать

(?<=')[a-z]+(?=')|(?<=\[)[a-z]+(?=])

Или, если должна быть группа захвата, используйте

((?<=')[a-z]+(?=')|(?<=\[)[a-z]+(?=]))

Детали

  • (?<=')[a-z]+(?=') - 1 + строчные буквы ASCII, непосредственно предшествующие и сопровождаемые ' символами
  • | - или
  • (?<=\[)[a-z]+(?=]) - 1+ строчных букв ASCII, непосредственно предшествующих [ и сопровождаемых ] символами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...