2011-02-16 156 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