首页 > 解决方案 > Java在String中搜索负浮点数

问题描述

可以说我有一个这样的字符串:

位置:位置[gps 39.549497,-120.328997 hAcc=20 et=+44m40s745ms alt=0.0 vel=0.0 bear=0.0 vAcc=??? sAcc=??? bAcc=??? {捆绑[mParcelledData.dataSize=96]}]

我想提取 39.549497 和 -120.328997

我试过下面的代码:

    Pattern p = Pattern.compile("[0-9]+[.][0-9]+");
    Matcher m = p.matcher(logLat);
    while (m.find()) {
        Log.i("found is", m.group());
    }

但无法得到负数。

标签: javaandroidregex

解决方案


尝试使用模式:

Location\[gps (-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?)

您更新的 Java 代码:

Pattern p = Pattern.compile("Location\\[gps (-?\\d+(?:\\.\\d+)?),(-?\\d+(?:\\.\\d+)?)");
Matcher m = p.matcher(logLat);
while (m.find()) {
    Log.i("found lat,lng: " + m.group(1) + "," + m.group(2));
}

可能为负的浮点数的一般模式是:

-?\d+(?:\.\d+)?

我在上面使用的确切模式也具有仅针对感兴趣的纬度/经度值的上下文(但不是输入中的其他浮点数)。请参阅下面的演示链接。

演示


推荐阅读