Как сказал khmarbaise, сначала убедитесь, что регулярные выражения могут это сделать. Но есть случаи, когда они не могут [*], и тогда я думаю, что ANTLR действительно может быть законным выбором.
[*] Математическое обоснование этого см. В http://en.wikipedia.org/wiki/Formal_grammar#The_Chomsky_hierarchy
Обновление
Теперь, когда вы обновили свой вопрос, я вижу, что вы действительно хотите сделать: для изменения полного HTML-файла я бы использовал синтаксический анализатор, такой как NekoHTML, или что-то подобное: http://www.benmccann.com/dev-blog/java-html-parsing-library-comparison/
Затем вы можете использовать их для извлечения URL. Тогда
- разбирать только сам URL - e. г. с регулярными выражениями, классом URL Java (или иногда лучше: URI), или, возможно, ANTLR
- изменить проанализированный URL
- и снова запишите HTML, используя NekoHTML /...
Do not Используйте регулярные выражения для анализа всего HTML-файла! Вы можете использовать ANTLR для этого в теории, но было бы очень трудно сделать это надежно.