2010-12-08 24 views
4

Je travaille sur l'analyse des agents d'utilisateur Android, avec Python 2.5, et jusqu'à présent, j'ai été en mesure de comprendre une regex qui fonctionne pour "la plupart" des agents utilisateurs android qui rassemble la version majeure et mineure.Python Regex pour analyser séparément le nom de périphérique de l'agent utilisateur Android

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

Le regex ci-dessus fonctionne pour l'exemple ci-dessous:

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 

Cependant, je voudrais également obtenir ce type d'appareil Android c'est. Je vois un modèle commun dans les agents d'utilisateur android pour trouver le nom de l'appareil en utilisant cette référence: http://www.botsvsbrowsers.com/category/6/index.html

Fondamentalement, il semble toujours être après le langage, comme "en-gb;" et avant "Build /"

Alors, comment dois-je modifier mon regex afin que dans l'exemple ci-dessus, je serais en mesure d'analyser "Nexus One".

Un autre exemple d'agent utilisateur Android serait:

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 

Dans l'exemple ci-dessus, je suis à la recherche d'obtenir "HTC Legend"

Répondre

2

Essayez ceci:

(?P<browser>Android) (?P<major_version>\d*)\.(?P<minor_version>\d*);[^;]*;(?P<device>[ \w]+) Build\/ 
1
(?P<browser>Android)\s(?P<major_version>\d+)\.(?P<minor_version>\d+);[^;]*;\s(?P<device>.+)\sBuild