Поиск в списке шаблонов
У меня есть список таких объектов:
{
"pattern": "Mozilla/5.0 (*Mac OS X 10?4*) AppleWebKit/* (KHTML, like Gecko) Chrome/46.*Safari/*",
"name": "Macintosh",
"brand": "Apple"
}
{
"pattern": "Mozilla/5.0 (*Windows NT 5.1*rv:46.0*) Gecko/*/",
"name": "Windows",
"brand": "Microsoft"
}
или вот так (тоже самое, но в регулярных выражениях):
{
"pattern": "mozilla/5\.0 \(.*linux.*android.4\.4.*gxt_dongle_3188 build/.*\) applewebkit/.* \(khtml, like gecko\) version/.* chrome/.*safari/.* bdbrowserhd_i18n/1\.(\d).*",
"name": "Macintosh",
"brand": "Apple"
}
Это словарь пользовательских агентов браузера с 7000 наименований. У меня есть строка агента пользователя, например:
"Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome/46.0.2490.86 Safari/537.36"
И мне нужно как можно быстрее найти название и марку. Теперь я разбил словарь на куски (100 шаблонов) и приклеил к одному большому регулярному выражению. После этого я пытаюсь подобрать пользовательский агент этого большого регулярного выражения. Если подобрано - я хожу по всем пунктам этого куска.
Вы бы порекомендовали какой-нибудь движок БД, который может помочь мне в этом? Или просто алгоритм, который может помочь мне сделать это быстрее?