我有一个字符串,如:
“您好我不想选择123.12但是890.12我该怎么做”
从上面的字符串中,我想选择“890.12”,我已经尝试过 $ 。 对于“890.12”,它应该在最后但是我在“890.12”之后得到一些单词。
答案 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
之类的东西,它也会起作用。