2011-02-16 154 views
2

我有以下一段HTML代码,我需要解析它来检索玩家名称和他得分的运行。 在这种情况下,它是'罗斯泰勒'和9. 解析这些信息的最佳方法是什么?不想使用HTML解析器。 REGEX是最好的方式(我知道人们已经死了!但是我只想要这些2位信息,因此不想使用解析器)? 我一直在绞尽脑汁想我该如何找出球员姓名在html文件中的位置以及运行得分的随后行。 下面的HTML评论部分是硬编码的。我可以到达这个地方。然后检索标签之间的名称。这是做这件事的好方法吗? 另外如何检索紧接着的下一行中的运行部分?Android:解析HTML代码块


<!-- <a href="javascript:void(0);" onClick="return showHwkTooltip(this, 'lvpyrbat1');" class="livePlayerCurrent">*Luke Woodcock</a>--> 

<a href="/icc_cricket_worldcup2011/content/current/player/38920.html" target="_blank" class="livePlayerCurrent" title="view the player profile for Ross Taylor"> 
*Ross Taylor 
</a> <span style="margin-left:5px;" title="left-hand bat">(lhb)</span > 

    </td > 
    <td><b>9</b></td> 
    <td>9</td> 
    <td>1</td> 
    <td>0</td> 
    <td>100.00</td> 
    <td></td> 
    <td colspan="3" align="left"><span class="batStyl">striker</style></td> 
    <td></td> 
    <td colspan="8"></td> 
    </tr> 

请让我知道如果你需要更多的信息。

问候, 山姆

+0

请仔细阅读邮件格式规则编辑器中的帮助。 – BalusC 2011-02-16 18:24:24

+1

使用解析器。即使是两条信息。不要陷入正则表达式解析HTML。 – CanSpice 2011-02-16 18:43:49

+0

@ CanSpice你也可以建议一个HTML/XML解析器吗?与以上例子中使用REGEX相比,它有什么不同? – sammydude 2011-02-16 20:01:04

回答

1

请考虑使用正确的工具的工作,例如,一个html/xml parserregex

如果你真的想用正则表达式它,你可以尝试做如下的:

提取得分

(?<=\\<b\\>)\\d+(?=\\</b\\>) 

提取玩家的名字

(?<=\\>)[^\\<]+(?=\\</a\\>) 

第二个正则表达式假设你通过删除评论标签之间的锚点消毒xml。

<!-- ... --> 

它做了什么,它提取任何锚点内的值。这是使用正则表达式的基本限制之一,它不是上下文感知。

0

对于什么是值得的,你也可以看看Jsoup。我在我的项目中使用它,并且它非常好地处理格式错误的html。我认为这可能是我使用的唯一理由;)

问候, EZFrag