Java 获取十进制数正则表达式

Java 获取十进制数正则表达式,java,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.printl

我试图创建一个简单的程序来练习解析数据。我将向您展示我的代码,然后解释我尝试执行的操作:

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));
String data=“176.85”;
Pattern=Pattern.compile(“\\d+([.]\\d{2}”);
Matcher Matcher=pattern.Matcher(数据);
if(matcher.find())
系统输出println(匹配器组(1));
我所要做的就是打印出“176.85”。小数点后总是有两个数字,小数点前总是有一个或多个数字。我不需要担心负数,尽管如果我的正则表达式处理了负数也不会有什么坏处。我的代码进入
if
,但打印
null
。我的正则表达式有问题吗?下面是我尝试过的其他正则表达式。它们还打印
null
,如果
,则从不进入

  • ^[+-](\d+(.?\d+)。\d+)$
  • /^\d+。?\d*$/
  • /\d+。?\d*/

  • 对于其表达式功能:

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

    对于其表达式功能:

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

    嗯,试着把模式改成这个
    \\d+\.\\d{2}

    matcher.group(0)


    我试过了,效果很好:)

    嗯,试着把模式改成这个
    \\d+\\.\\d{2}

    matcher.group(0)


    我试过了,效果很好:)

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

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

    并提取组0。

    若要将数字和+/-作为前缀进行匹配,请使用:

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

    并提取组0。

    请记住,此正则表达式将匹配小数点前超过4位的数字。:)是的,帕特先生:),我肯定数字会超过1000,所以我没有限制,但逗号后只有2位。@A-SM如果小数点前有逗号(即15570.28),这就行了。我想:
    \\d+\\,?\\d+\.\\d{2}
    请记住,此正则表达式将匹配小数点前超过4位的数字。:)是的,帕特先生:),我肯定数字会超过1000,所以我没有限制,但逗号后只有2位。@A-SM如果小数点前有逗号(即15570.28),这就行了。我想:
    \\d+\,?\\d+\.\\d{2}