我需要解析黑莓浏览器用户代理,这样我就可以使用python 2.5获得它的设备和版本。例如:
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
我很难搞清楚正则表达式,任何帮助都会很棒。感谢
答案 0 :(得分:1)
这样的事情适合你的情况,但不一定适用于所有情况:
'^(\D*)(\d*)/(\d*)\.(\d*)\.'
\D
表示“任何不是十进制数字的字符”,\d
表示“任何十进制数字”。
答案 1 :(得分: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]
答案 2 :(得分: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')
>>>