переписывание URL с помощью antlr - PullRequest
0 голосов
/ 05 мая 2010

Моя Java-программа должна переписать URL-адреса в HTML (как раз вовремя). Я ищу правильный инструмент и задаюсь вопросом, выполняет ли antlr эту работу за меня?

Например:

<html><body>  <img src="foo.jpg" /> </body></html> 

следует переписать как:

<html><body>  <img src="http://foo.com/foo.jpg" /> </body></html> 

Я хочу читать / записывать из / в поток (побайтно).

Ответы [ 2 ]

0 голосов
/ 05 мая 2010

Как сказал 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 для этого в теории, но было бы очень трудно сделать это надежно.

0 голосов
/ 05 мая 2010

А как насчет регулярных выражений?

...