2014-01-18 37 views
-2

我想解析html標記和標記的內容。我可以使用Java UrlConnection將html加載爲字符串。我使用這個正則表達式:<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>但我無法獲得所有標籤。是否有更靈活的正則表達式來獲取所有類型的標籤。注意:我可以很容易地用Jsoup完成所有這些工作。 但我不應該使用任何庫。用Java中的正則表達式解析HTML標記

<div id="footer"> 
    <div id="footerbody"> 
     <div id="footerabout"> 
      <h3>Bilgi</h3> 
      <ul> 
       <li><a href="/page/history">Tarihçe</a></li> 
       <li><a href="/page/visionandmission">Vizyon ve Misyon</a></li> 
       <li><a href="/page/education">Eğitim</a></li> 
       <li><a href="/page/staff">Kadro</a></li> 
       <li><a href="/page/labs">Laboratuvarlar</a></li> 
       <li><a href="/page/classrooms">Sınıflar</a></li> 
       <li><a href="/page/commissions">Komisyonlar</a></li> 
      </ul> 
     </div> 
     <div id="footersitemap"> 
     <h3>Site Haritası</h3> 
     </div> 
</div> 

是有可能我得到這個輸出。

tag : div 
    content : id=footer 

...等等。

謝謝。

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454? – noone

+1

一些問題值得-100 – Jayan

+0

@noone:反駁[另一個答案](http://stackoverflow.com/a/1733489/581205)。對於一個快速和骯髒的解決方案,這很好(對於真正的解析它是一個非常糟糕的主意)。 – maaartinus

回答

1

我不明白你爲什麼不想使用庫?
你不應該使用正則表達式來解析HTML和其他標記語言。
正則表達式不是爲此目的而設計的。
使用專用庫來做到這一點。您可以使用HTML Cleaner,NekoHTMLJTidy
他們是很好的html解析器。

+0

但我不應該使用圖書館。 – reigeki

+1

..你不應該嘗試使用正則表達式來完成需要解析器的工作。 –

0

每個人似乎都因爲某人試圖用正則表達式解析HTML而感到非常沮喪,以至於您可能會等待一段時間才能得到答案。

的問題是在這裏

<div id="footer"> 
    <div id="footerbody"> 
     <div id="footerabout"> 
     .... whatever 
     </div> 

你的正則表達式的整個文本匹配上面,從最開放最裏面的結束div

如果你知道你的文字保持這樣,你可以以某種方式修復它。編寫一個識別三個嵌套div的正則表達式可能是一個很好的練習。但我真的會去找一些真正的解析器。