2010-12-08 48 views
0

我需要解析黑莓瀏覽器用戶代理,以便我可以得到它使用python 2.5的設備和版本。例如:Python正則表達式來解析黑莓瀏覽器用戶代理

BlackBerry9630/4.7.1.65 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/-1,gzip(gfe),gzip(gfe) 

在上面的用戶代理,我想收集以下組:

Browser: Blackberry 
Device: 9630 
Major Version: 4 
Minor Version: 7 

我不關心的信息的其餘部分。

下面是另一個例子:

BlackBerry9530/5.0.0.328 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105,gzip(gfe),gzip(gfe),gzip(gfe) 
Browser: Blackberry 
Device: 9530 
Major Version: 5 
Minor Version: 0 

我可怕揣摩正則表達式和任何幫助將是巨大的。由於

回答

1

像這樣的事情會爲你的情況下工作,但不一定是所有情況:

'^(\D*)(\d*)/(\d*)\.(\d*)\.' 

\D意味着「任何字符,這不是一個小數位數」和\d意思是「任意十進制數」。

0
browser, version = useragent.split()[0].split("/") 
browsername = re.findall(r"[a-zA-Z]+", browser) 
device = re.findall(r"[0-9]+", browser) 
versions = re.findall(r"[0-9]+", version) 
major = versions[0] 
minor = versions[1] 
0
>>> import re 
>>> s = 'BlackBerry9530/5.0.0.328 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105,gzip(gfe),gzip(gfe),gzip(gfe)' 
>>> print(re.compile(r'(Blackberry)(\d+)/(\d+)\.(\d+)\.',re.I).search(s).groups()) 
('BlackBerry', '9530', '5', '0') 
>>>