我想解析html标签和标签的内容。我可以使用Java UrlConnection
将html加载为字符串。我使用这个正则表达式:<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>
但我无法获得所有标签。是否有更灵活的正则表达式来获取所有类型的标签。注意:我可以轻松地使用 Jsoup 完成所有这些工作。
但我不应该使用任何库。
<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
...等
感谢。
答案 0 :(得分:1)
我不明白为什么你不想使用图书馆?
您永远不应该使用Regex来解析HTML和其他标记语言
正则表达式不是为此目的而制作的。
使用专用库来执行此操作
您可以使用HTML Cleaner,NekoHTML和JTidy
他们是很好的HTML解析器。
答案 1 :(得分:0)
每个人似乎都对有人试图用正则表达式解析HTML这一事实感到非常不安,所以你可以等待很长时间才能得到答案。
问题出在这里
<div id="footer">
<div id="footerbody">
<div id="footerabout">
.... whatever
</div>
您的正则表达式匹配上面的整个文本,从最外面的开头到最里面的结束div
。
如果你知道你的文字是这样的,你可以用某种方式解决它。编写一个识别三个嵌套div
的正则表达式可能是一个很好的练习。但我真的需要一些真正的解析器。