2011-06-27 32 views
0

我需要解析通過將word文檔保存爲html而生成的html文檔。在html文檔中解析腳註

我一直使用的HTML敏捷包相當成功,但在這種情況下我想使用正則表達式的這一部分可能會更容易(意見?)

Word中生成以下代碼時它轉換它的註腳成HTML

<a href="#_ftn2" name="_ftnref2" title=""><span 
class=MsoFootnoteReference><span class=MsoFootnoteReference><span 
style='font-size:10.0pt'>[2]</span></span></span></a> 

該輸出是對於每個腳註符合僅HREF =和名稱改變以及[2]設置文本。

我需要提取_ftn2和[2]元素。

到目前爲止,我有以下的正則表達式,這將在_ftn2部分提取到我有一點麻煩解析第二位與所有那些跨度標籤名稱組

<a href="#(?<name>_ftn\d).*>(<span class=MsoFootNoteReference>) 

這是否會更容易使用正則表達式呢,還是應該繼續使用這個部分的HAP?

的旁白,沒有人知道爲什麼這個詞產生嵌套相同span標籤

<span class=MsoFootnoteReference> 
+0

我會得到班級MsFootNoteReference的所有跨度並檢查父母href ... – philipp

回答

1

如果輸入如下正是格式,那麼你就可以擺脫一個相當寬鬆的正則表達式。你只需要忽略除部分要提取,然後採用非貪婪表情吃了它們之間的所有垃圾都:

<a href="#(?<name>_ftn\d).*?(?<number>\[\d+\]).*?<\/a> 

可以使用非貪婪.*?吃了所有的額外標記,因爲沒有任何內容會與您的下一個\[\d+\]模式匹配。你最終並不需要.*?<\/a>位,這主要是因爲對稱性和一些額外的偏執狂。

像這樣的東西可能是少數情況下使用正則表達式拆分HTML是合理的。你可以用HTML解析器來做這種事情,但是你會成爲XPath表達式(所有這些都看起來相似),DOM操作或SAX事件的噩夢。你甚至可能會被吃掉。