Как захватить содержимое в строке с помощью регулярного выражения в Java - PullRequest
0 голосов
/ 21 декабря 2011

Я хотел бы проанализировать HTML-форму и вытащить наше имя файла любого встроенного изображения

Так что строка может выглядеть так:

{ 

... случайный контент HTML

    image1.png 

 more random HTML content

    image3.png

... }

Исходя из вышесказанного, я хотел бы написать функцию на Java, которая возвращает мне {image1.png, image3.png}.

У меня есть регулярное выражение, которое возвращает мне только последнее имя изображения (image3.png), но оно игнорирует предыдущие имена изображений. Как я могу захватить их всех с помощью регулярных выражений?

Вся / любая помощь будет оценена.

1 Ответ

2 голосов
/ 21 декабря 2011

https://stackoverflow.com/a/2059614/684934 дают хороший намек. В частности, вы, вероятно, ищете что-то вроде [a-zA-Z0-9_\-]+\.(png|jpg|gif|jpeg|tif)

Обратите внимание, однако, что это регулярное выражение, и он ищет только последовательности символов. Если вы просматриваете сайт, который обслуживает динамические изображения, например, с помощью сервлетов, и URI ресурса не заканчивается обычным расширением файла изображения (например, .jsp или .do), тогда регулярное выражение полностью завершится ошибкой. Он также будет подбирать любые «имена изображений» из любого типа текста, который совпадает, который фактически не представляет изображение на странице.

Чтобы сделать работу правильно, вам нужно будет использовать какой-то DOM и пройти элементы <img>. (И элементы <button>, которые могут относиться к типу image ... возможно, есть еще теги, которые могут иметь изображения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...