java - java中十进制数的奇怪正则表达式行为

标签 java regex decimal

以下是我的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+)?

关于java - java中十进制数的奇怪正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017942/

相关文章:

java - MySQL 触发器通过直接插入工作,但在通过 Hibernate 提交时不工作

javascript - 如何捕获 AngularJS 输入字段中的模式错误?

AWK 将十进制转换为二进制

javascript - 将十进制值转换为 32 位浮点十六进制

ruby-on-rails - 验证中的正则表达式或 `nil`

c# - 将 System.Array 的 C# 十进制值转换为字符串

java - 为什么需要动态绑定(bind)?

java - 空对象引用上的错误 : Attempt to invoke virtual method . ..

java - 基于 SortedSet 中的 compareTo() 进行排序

php - 正则表达式和 BBCode - 完善嵌套报价