如何使用正则表达式并将结果分配给Android中的变量?

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,minsf_Distance,m_distanceUnit,f_timeEstm_timeEstUnit使用正则表达式分别?

我尝试"\d+(\.\d+)?"在RegEx Tester中使用,结果显示找到了2个匹配项,但是如果我"\\d+(\\.\\d+)?"在Android代码中使用它,则显示没有匹配!

什么可能出错的建议?

Fed*_*dor 8

那样的东西?

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)