2009-10-21 44 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

相关问题