假设
String str="123 abc 123.4 256";
Matcher m = Pattern.compile("\\d+").matcher(scan);
while (m.find())
{
System.out.println(m.group(0));
}
通过使用此代码我得到输出:
123
123
4
256
但是在输出中我希望它为123,123.4
,256。我应该使用什么模式来获得理想的结果,或者使用匹配器和模式的其他解决方案是什么。
答案 0 :(得分:4)
你的正则表达式只查找数字(加号只表示至少一个)。如果需要小数,则需要将点包含在正确的位置
(\\d+\\.\\d+)
这将给你至少一个数字,后跟一个点,后跟至少一个数字。
答案 1 :(得分:2)
您可以使用以下模式匹配123.4:\ d + \。\ d *
String str="123 abc 123.4 256";
Matcher m = Pattern.compile("\\d+\\.\\d*").matcher(str);
while (m.find())
{
System.out.println(m.group(0));
}
答案 2 :(得分:0)
请改为尝试:
Matcher m = Pattern.compile("\\d+(\\.\\d+)?").matcher(str);
答案 3 :(得分:0)
查看此链接 http://www.regular-expressions.info/floatingpoint.html 有几个很好的例子。