Нужна помощь в написании регулярных выражений для захвата журналов DNS

Ниже приведены примеры журналов DNS, где мне нужно написать регулярное выражение для захвата имени хоста "Renju123". Структура формата журнала немного отличается в обоих примерах.

Примеры журналов приведены ниже:

"2018-12-12 13:25:30", "Renju, Jacob, M (renjutest)", "Renju, Jacob, M (rtest), Renju123, сайт по умолчанию, тест / межсетевой экран","10.221.5.136","XXX.XXX.XXX.XXX","Разрешено","16 (A)","NOERROR","1XX.1X.1XX.1XX.Test.com.","Компьютерная безопасность"

"2018-12-12 13:09:55", "rtest", "Renju123, сайт по умолчанию,Renju Renju/Renju","10.250.33.85","XXX.XXX.XXX.XXX","Разрешено","12 (PTR)","NOERROR","1XX.1X.1XX.1XX.Test.com."," Программное обеспечение / Технология "

Регулярное выражение, которое я использовал, захватывает только первое имя хоста журнала

(?P(?<=),).*?(?=,.? По умолчанию)) ссылка здесь

Но я хотел бы иметь одно регулярное выражение для захвата HostNames (Renju123) из обоих примеров журналов

1 ответ

Решение

То, что вы можете сделать (согласно комментариям), это найти двойную кавычку или запятую 1+ раз, используя [",]+ а затем захватить в группу, соответствующую 1+ слов символов. затем ,Default следует, чтобы вы могли снова соответствовать:

Ваш матч будет в HostName группа.

[",]+(?P<HostName>\w+),Default

Regex demo

Если ваше имя хоста начинается с символа слова, вы можете использовать обходные пути и границу слова \b

(?<=[,"])\b(?P<HostName>\w+)(?=,Default)

Regex demo

Другие вопросы по тегам