2013-10-26 48 views
0

我想創建一個簡單的程序來練習解析數據。我會告訴你我的代碼,然後解釋什麼,我試圖做的:「176.85」獲取十進制數的正則表達式

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)); 

所有我想要做的就是打印出來小數點後面總是有兩個數字,小數點前面有一個或多個數字。我不需要擔心負數,儘管如果我的正則表達式處理了這些數據,它不會受到傷害。我的代碼進入if,但打印null。我的正則表達式有問題嗎?下面是我嘗試過的其他正則表達式。他們還打印null,或永遠不會進入if

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

回答

1

嗯,嘗試改變圖案到該\\d+\\.\\d{2}
matcher.group(0)
我已經試過了,效果不錯:)

+0

謝謝!在8分鐘後,我會接受。 – Andrew

+0

請記住,這個正則表達式將匹配小數點前4位以上的數字。 :) –

+0

是的,它會先生帕特:),我敢肯定,這些數字會高於1000,所以我沒有限制,但逗號後只有2位數字。 –

0

用於其表達的功能:

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

如果您希望與+/-作爲前綴,使用匹配的數字:

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

,並提取組0