如何选择字符串中的最后一个浮点值

时间:2018-01-05 14:19:45

标签: java regex

我有一个字符串,如:

  

“您好我不想选择123.12但是890.12我该怎么做”

从上面的字符串中,我想选择“890.12”,我已经尝试过 $ 。 对于“890.12”,它应该在最后但是我在“890.12”之后得到一些单词。

2 个答案:

答案 0 :(得分:2)

可以找到一个正则表达式匹配,但为了保持简单和可读性,我建议像这样循环:

Matcher m = Pattern.compile("\\d+\\.\\d+").matcher(string);
String value = null;
while(m.find()) {
    value = m.group();
}

如果value为null,则找不到模式,否则它是模式的最后一次出现。

答案 1 :(得分:0)

Per Huss已经给出了一个非常可读的答案。正如他所提到的,也可以通过一次匹配来完成,而不需要循环:

private static String findLastDecimal(String string)
{
    Matcher m = Pattern.compile("(\\d+\\.\\d+)(?!.*\\d+\\.\\d+)").matcher(string);
    if (m.find())
    {
        return m.group(1);
    }
    return null;
}

此处的正则表达式查找未跟随另一个小数的小数。如果在最后一个“正确”小数之后有整数或类似.123之类的东西,它也会起作用。