Che*_*ing 2 java regex android
我有一个名为的字符串s_Result,将从Internet解析.的格式可以是"Distance: 2.8km (about 9 mins)",并且有4个变量其是f_Distance,m_DistanceUnit,f_timeEst,m_timeEstUnit.
我的问题是如何分析s_Result和分配2.8,km,9,mins为f_Distance,m_distanceUnit,f_timeEst并m_timeEstUnit使用正则表达式分别?
我尝试"\d+(\.\d+)?"在RegEx Tester中使用,结果显示找到了2个匹配项,但是如果我"\\d+(\\.\\d+)?"在Android代码中使用它,则显示没有匹配!
什么可能出错的建议?
那样的东西?
String s_Result="Distance: 2.8km (about 9 mins)";
//Distance parsing
Pattern p = Pattern.compile("Distance: (\\d+(\\.\\d+)?)(.*?)\\b");
Matcher m = p.matcher(s_Result);
if(m.find()){
MatchResult mr=m.toMatchResult();
f_Distance=mr.group(1);//2.8
m_DistanceUnit=mr.group(3);//km
}
//Time parsing
p = Pattern.compile("about (\\d+(\\.\\d+)?) (.*)\\b");
m = p.matcher(s_Result);
if(m.find()){
MatchResult mr=m.toMatchResult();
f_timeEst=mr.group(1);//9
m_timeEstUnit=mr.group(3);//min
}
Run Code Online (Sandbox Code Playgroud)
这里有另一种选择,以匹配更灵活的格式:
String s_Result="Distance: 2.8km (about 9 mins)";
Pattern p = Pattern.compile("(\\d+(\\.\\d+)?) ?(\\w+?)\\b");
Matcher m = p.matcher(s_Result);
while(m.find()){
MatchResult mr=m.toMatchResult();
String value=mr.group(1);//2.8 and 9 come here
String units=mr.group(3);//km and mins come here
}
Run Code Online (Sandbox Code Playgroud)