Python Regex, чтобы разобрать имя устройства агента пользователя Android - PullRequest
4 голосов
/ 08 декабря 2010

Я работаю над разбором пользовательских агентов Android с Python 2.5, и до сих пор мне удалось найти регулярное выражение, которое работает для "большинства" пользовательских агентов Android, которое собирает главную и вспомогательную версии.

(?P<browser>Android) (?P<major_version>\d*).(?P<minor_version>\d*)

Вышеприведенное регулярное выражение работает для приведенного ниже примера:

Mozilla/5.0 (Linux; U; Android 2.2; en-gb; Nexus One Build/FRF50) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Однако я хотел бы также узнать, какой это тип устройства Android.Я вижу общую схему в пользовательских агентах Android для того, где найти имя устройства, используя эту ссылку: http://www.botsvsbrowsers.com/category/6/index.html

В основном это всегда, кажется, после языка, например, "en-gb;"и перед "Build /"

Так как мне изменить свое регулярное выражение, чтобы в приведенном выше примере я мог разобрать "Nexus One".

Другой пример агента пользователя Android будет:

Mozilla/5.0 (Linux; U; Android 2.1; en-us; HTC Legend Build/cupcake) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

В приведенном выше примере я ищу "HTC Legend"

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Попробуйте это:

(?P<browser>Android) (?P<major_version>\d*)\.(?P<minor_version>\d*);[^;]*;(?P<device>[ \w]+) Build\/
1 голос
/ 08 декабря 2010
(?P<browser>Android)\s(?P<major_version>\d+)\.(?P<minor_version>\d+);[^;]*;\s(?P<device>.+)\sBuild
...