Приветствую, форумчане. Напарсил юзер-агентов, а там мусор встречается. Пишу вот регулярку, чтобы вытащить нормальные данные.
/(Mozilla[^\v]+)(Mozilla[^\v]+)/gm
Вот для такой мульти-строки отлично работает:
Mozilla/5.0
Chrome/51.0.2704.103 Safari/537.36
Chrome/61.0.3163.100 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; rv:47.0) Gecko/20100101 Firefox/47.0 Mozilla/5.0 (Windows NT 10.0; rv:50.0) Gecko/20100101 Firefox/50.0
Видим, что мусор отбрасывается, незавершенные строки, а там, где на одной строке два идентификатора, данные успешно распарсиваются.
Microsoft Windows [Version 10.0.16299.371]
(c) Корпорация Майкрософт (Microsoft Corporation), 2017. Все права защищены.
C:\Users\Саша>cd desktop
C:\Users\Саша\Desktop>t1.pl
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0 (Windows NT 10.0; rv:50.0) Gecko/20100101 Firefox/50.0
C:\Users\Саша\Desktop>
Однако, стоит добавить обычную строку, вида
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko)
и, она игнорируется. Т.е., чистая строка игнорируется. Хотелось бы ее записать в первое совпадение, не соображу, как модифицировать regex.
Понятно, что в текущей конфиг. пёрл ее игнорит, т.к. ждет, что дальше должна быть другая строка, вот как модифицировать первый шаблон, чтобы под него попадала обычная чистая строка агента, ничем не оканчивающаяся?