我正在尝试创建一个简单的程序来练习解析数据。我会告诉你我的代码,然后解释我正在尝试做什么:
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
。
答案 0 :(得分:3)
如果您希望将数字与+/-匹配作为前缀,请使用:
[-+]?\\d{1,4}\\.\\d{2}
提取组0。
答案 1 :(得分:1)
嗯,尝试将模式更改为此\\d+\\.\\d{2}
并且matcher.group(0)
我试过了,效果很好:)。
答案 2 :(得分:0)
表达式函数:
(\\d+([.]\\d{2})?)