Принятие правильно построенного XHTML, хлебайте xml, соберите все теги, найдите теги и распечатайте href и текст.
input = """<html><body>
<a href = "http://www.hjsoft.com/">John</a>
<a href = "http://www.google.com/">Google</a>
<a href = "http://www.stackoverflow.com/">StackOverflow</a>
</body></html>"""
doc = new XmlSlurper().parseText(input)
doc.depthFirst().collect { it }.findAll { it.name() == "a" }.each {
println "${it.text()}, ${it.@href.text()}"
}
Быстрый поиск Google поднял симпатичную возможность, TagSoup.
Я не знаю Java, но я думаю, что xpath намного лучше, чем классические регулярные выражения для получения одного (или больше) элементы HTML.
также легче записать и читать.
<html>
<body>
<a href="1.html">1</a>
<a href="2.html">2</a>
<a href="3.html">3</a>
</body>
</html>
С HTML выше, это выражение "/html/body/a" перечислит все href элементы.
Вот является хорошее пошаговое учебное руководство http://www.zvon.org/xxl/XPathTutorial/General/examples.html
Используйте XMLSlurper, чтобы проанализировать HTML как XML-документ и затем использовать метод находки с соответствующим закрытием, чтобы выбрать теги и затем использовать метод списка на GPathResult для получения списка тегов. Необходимо тогда быть в состоянии извлечь текст как дети GPathResult.
Попробуйте регулярное выражение. Что-то вроде этого должно работать:
(html =~ /<a.*href='(.*?)'.*>(.*?)<\/a>/).each { url, text ->
// do something with url and text
}
Смотрят на Groovy - Учебное руководство 4 - основы Регулярных выражений и Регулярное выражение Тега привязки, Повреждающееся .
Синтаксический анализатор HTML + Регулярные выражения, Любой язык сделал бы это, хотя я скажу, что Perl является быстрым решением.