2009-10-21 84 views
1

我不是RegEx專家。 我需要從HTML表格中提取特定數量。
一個例子:正則表達式:從源代碼中提取數字

<td>13</td><td> 
    </td><td align="right">29.543</td> 
    <td align="right">1.777</td> 
    <td align="right">2.588</td> 
</tr><tr><td><a href="player.php?p=84668" >Caterdamus</a></td> 
    <td>7</td><td> 
    Meister</td><td align="right">9.874</td> 
    <td align="right">1.716</td> 
    <td align="right">5.791</td> 
</tr><tr><td><a href="player.php?p=87216" >grappa</a></td> 
    <td>2</td><td> 
    </td><td align="right">1.044</td> 
    <td align="right">21</td> 
    <td align="right">146</td> 
</tr></table> 

的模式如下:

<td>13</td><td> 
<td>7</td><td> 
<td>2</td><td> 

我如何提取的數字出來的文字,並將其存儲到一個變量。提示:數字是正整數。

謝謝:)

+0

這是爲什麼downvoted?這是一個合法的問題。 – 2009-10-21 12:57:31

+0

@matt:我不是* down-voter *,但我懷疑這是因爲它是這類問題之一,每週要問幾次(有時甚至在一天),幾乎總是得到(正確)回答與*「不要使用正則表達式」* - 答案。 – 2009-10-21 14:17:01

回答

8

我不會使用正則表達式來解析HTML或XML。相反,我會將文檔加載到HTML DOM解析器中 - 您可以使用find several open source ones here。我無法擔保其中的任何一種 - 我從來沒有在Java中使用除XML以外的其他任何東西。

+0

這具有對單元屬性的變化具有魯棒性的優點。 – 2009-10-21 12:44:20

+0

這個遊戲似乎永遠不會變老...問:「我怎樣才能用正則表達式做HTML」 - 答:「不要」。驚人。 :) – Tomalak 2009-10-21 13:26:23

+1

當然,HTML解析器是更優雅的方式,並且如果要處理HTML文檔中的許多數據(如果可以使用XPath,尤其酷酷),也是更簡單的方法。但是對於一些數字來說,它有點太大了。 – eWolf 2009-10-21 15:36:22

2
<td>(\d+)</td> 

應該做的工作。

+0

不要忘了逃避正斜槓...... – Tenner 2009-10-21 12:50:30

3

我不知道Java的正則表達式究竟但I'ld建議是這樣

/<td>(\d+)<\/td><td>/ 

因爲正則表達式的語法是多語言頗爲相似。

說明

  • ( ... )在它的左捕獲正則表達式的迴歸變量的
  • \d表示位數
  • +停留令牌的一個或多個正好裏面的內容邊

既然你你只有正整數,你不必關心符號和小數點。

+0

更安全,即使你可以添加兩側的空白,並得到像/^\ s *​​(\ d +)<\/td>​​\ s * $/ – 2009-10-22 07:26:52