Нужна помощь в написании регулярных выражений для захвата журналов 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
Если ваше имя хоста начинается с символа слова, вы можете использовать обходные пути и границу слова \b
(?<=[,"])\b(?P<HostName>\w+)(?=,Default)