Существует много сторонних решений, но я не уверен, какие существуют для Java, возможно, в версии для Java существует пакет гибкости HTML.
Но другим решением было бы использовать регулярное выражение
/<a\s+[^<]*?href\s*=\s*(?:(['"])(.+?)\1.*?|(.+?))>/
Исправлено регулярное выражение для обработки проблем, предложенных в комментариях.
Посмотрел несколько настоящих HTML-парсеров для Java, если вам нужно больше, чем regex aproach
http://htmlparser.sourceforge.net/
http://jericho.htmlparser.net/docs/index.html
http://jsoup.org/