获取十进制数正则表达式

时间:2013-10-26 02:38:34

标签: java

我正在尝试创建一个简单的程序来练习解析数据。我会告诉你我的代码,然后解释我正在尝试做什么:

String data = "<span id=\"yfs_l84_ibm\">176.85</span>";
Pattern pattern = Pattern.compile("\\d+([.]\\d{2})?");
Matcher matcher = pattern.matcher(data);
if (matcher.find())
    System.out.println(matcher.group(1));

我要做的就是打印出“176.85”。小数位后面总会有两个数字,小数点前面会有一个或多个数字。我不需要担心负数,虽然如果我的正则表达式处理那个就不会有害。我的代码进入if,但打印null。我的正则表达式有问题吗?以下是我尝试过的其他正则表达式。他们还会打印null,或者永远不会进入if

  1. ^ [+ - ](\ d +(\ d +)|。?。\ d +)?$
  2. / ^ \ d +。?\ d * $ /
  3. / \ d +。?\ d * /

3 个答案:

答案 0 :(得分:3)

如果您希望将数字与+/-匹配作为前缀,请使用:

[-+]?\\d{1,4}\\.\\d{2}

提取组0。

答案 1 :(得分:1)

嗯,尝试将模式更改为此\\d+\\.\\d{2}
并且matcher.group(0)
我试过了,效果很好:)。

答案 2 :(得分:0)

表达式函数:

(\\d+([.]\\d{2})?)