Regex 正则数范围

Regex 正则数范围,regex,integer,range,user-agent,Regex,Integer,Range,User Agent,我试图解析出一个特定的数字范围,但似乎不能正确地得到它。我希望从用户代理字符串中提取特定的浏览器版本。例如,我想解析Chrome1-42和Firefox1-40,但我无法理解语法 到目前为止,我得到的是这样的,哪种方式有效,但它抓住了它看到的第一个数字,不尊重2位数的范围: 壁虎..铬/([1-9]。|[1-4][1-2]) 样本: Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/34.0.1847

我试图解析出一个特定的数字范围,但似乎不能正确地得到它。我希望从用户代理字符串中提取特定的浏览器版本。例如,我想解析Chrome1-42和Firefox1-40,但我无法理解语法

到目前为止,我得到的是这样的,哪种方式有效,但它抓住了它看到的第一个数字,不尊重2位数的范围:

壁虎..铬/([1-9]。|[1-4][1-2])

样本:

Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/34.0.1847.137 Safari/537.36 Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/38.0.1847.137 Safari/537.36 Firefox 29:Mozilla/5.0(Android;Mobile;rv:29.0)Gecko/29.0 Firefox/23.0 Mozilla/5.0(Macintosh;英特尔Mac OS X 10.9;rv:29.0)Gecko/20100101 Firefox/29.0

有什么想法吗?蒂亚

((?:(?:Mozilla\/(?:[1-9]|[1-3][0-9]|40))|(?:Chrome\/(?:[1-9]|[1-3][0-9]|4[0-3])))\.[^ ]+)
这是你想要的吗/编辑/ 演示:

因为正则表达式仅用于文本匹配,数字被视为文本,所以要执行类似于1到41的操作,您必须执行以下操作:

\b[1-9]\b|\b[1-3][0-9]\b|4[0-2]\b

这是匹配1到9或10到39或40到42。我已经添加了边界
\b
,因此除了这些数字之外,没有任何东西是匹配的。

非常不清楚:您想在这里匹配并捕获
34
38
?这个数字必须是1到42?那么,试试看