0

我正在尝试创建一个简单的程序来练习解析数据。我将向您展示我的代码,然后解释我正在尝试做的事情:

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”。小数点后总会有两个数字,小数点前总会有 1 个或多个数字。我不需要担心负数,尽管如果我的正则表达式处理它不会有什么坏处。我的代码进入if,但打印null。我的正则表达式有问题吗?以下是我尝试过的其他正则表达式。他们也打印null,否则永远进不去if

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

3 回答 3

3

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

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

并提取第 0 组。

于 2013-10-26T02:45:41.950 回答
1

嗯,试着把模式改成这个\\d+\\.\\d{2}
matcher.group(0)
试过了,效果很好:)

于 2013-10-26T02:44:40.473 回答
0

对于它的表达功能:

(\\d+([.]\\d{2})?)
于 2013-10-26T02:43:53.940 回答