【发布时间】:2014-01-09 10:42:38
【问题描述】:
以下是我的java代码
Pattern p = Pattern.compile("-?\\d*\\.?\\d*");
Matcher m = p.matcher("the numbers are -3.4 and 132");
while (m.find()) {
System.out.println(m.group());
}
但它无法匹配任何一个数字。任何人都可以对这个程序有所了解吗?
【问题讨论】:
以下是我的java代码
Pattern p = Pattern.compile("-?\\d*\\.?\\d*");
Matcher m = p.matcher("the numbers are -3.4 and 132");
while (m.find()) {
System.out.println(m.group());
}
但它无法匹配任何一个数字。任何人都可以对这个程序有所了解吗?
【问题讨论】:
您的正则表达式匹配数字,但也匹配每个字符间。例如,使用\\d+ 而不是第二个\\d*。
我通常使用以下正则表达式来匹配数字(Java 已经转义):
[-+]?\\d*[.]?\\d+(?:[eE][-+]?\\d+)?
【讨论】:
* 和 ?)都允许 0 次重复,即空字符串。
使用这个正则表达式:
-?\\d+(?:\\.\\d+)?
【讨论】: