例如使用此用户代理
Mozilla/5.0 (Linux; U; fr-fr; Desire HD Build/FRG83D) **MyApp/2.2.1** AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533
我做了这个正则表达式:
MyApp/d+(.d+)+
哪个正确匹配"MyApp/2.2.1"
.我的问题是如何将此正则表达式修改为仅匹配版本号?
谢谢!
只需将与版本号之前的部分匹配的模式MyApp/
放在一个积极的后视断言中。
(?<=MyApp/)d+(?:.d+)+
演示
String s = "Mozilla/5.0 (Linux; U; fr-fr; Desire HD Build/FRG83D) **MyApp/2.2.1** AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533";
Matcher m = Pattern.compile("(?<=MyApp/)\d+(?:\.\d+)+").matcher(s);
if(m.find())
{
System.out.println(m.group());
}
输出:
2.2.1
您可以简单地将您的版本放在一个组中:
MyApp/(d+(.d+)+)
或者使用积极的回顾:
(?<=MyApp/)d+(.d+)+