java - 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());
}
但无法得到负数。
解决方案
尝试使用模式:
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+)?
我在上面使用的确切模式也具有仅针对感兴趣的纬度/经度值的上下文(但不是输入中的其他浮点数)。请参阅下面的演示链接。
演示
推荐阅读
- regex - 如何使用正则表达式验证段落内的 URL
- javascript - 在表单提交时调用测试反应函数
- c# - 在 C# 中将选定的属性添加到列表并作为 API 调用返回
- php - 日期差未正确输出
- error-handling - Power BI - 处理不存在的参数并在表中返回有效参数的数据
- sql - 在临时表的列中显示多行
- powershell - 如何使用 powershell 重命名 blob 文件
- graphql - 查询以获取按关系中的项目数排序的数据
- events - 如何在 Flutter 上实现事件监听器或委托
- kubernetes - Kubernetes 中并发 pod 数量增加导致资源限制突破