java - Java中从字符串中提取数字

标签 java regex numbers

引用这个问题here 。我有一个新问题。我想从字符串中提取最后两个出现的数字(经度/纬度)。

我使用引用答案中的方法。可以在此处找到发生错误的简单示例:

public static void main(String[] args) {
    String input = "St. Louis (38.6389, -90.342)"; 

    Pattern p = Pattern.compile("-?[\\d\\.]+");
    Matcher m = p.matcher(input);

    while(m.find()){
        System.out.println(m.group());
    }
}

控制台输出如下:

.
38.6389
-90.342

问题似乎出在“.”上。在“圣路易斯”。有人可以帮助我以一种好的方式解决这个问题吗?

非常感谢您的每一个回答/评论。

最佳答案

像下面这样改变你的正则表达式,

Pattern p = Pattern.compile("-?\\d+(?:\\.\\d+)?");
最后的

(?:\\.\\d+)? 将使小数部分成为可选。

关于java - Java中从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806579/

相关文章:

java - doGet() servlet 中带参数的多个 if else 语句

python - 如何制作一个返回数字位置值的函数?

java - Java 中的标点正则表达式

java - Java 中的随机数生成

java - 我的埃拉托色尼筛有什么问题

java - 在数组适配器类中设置 TextView 的值时出现空指针异常 - Android

java - Hibernate 查询未映射的连接表

java - 重新分配作业 : "Could not create the Java virtual machine."

javascript - 正则表达式不能以 .replace() 的方式工作

php - 抑制正则表达式中的完整模式匹配 (preg_match())