Как я могу использовать регулярное выражение для захвата тега 'img'? - программирование
Подтвердить что ты не робот

Как я могу использовать регулярное выражение для захвата тега 'img'?

Я хочу захватить тег img из текста, возвращенного из данных JSON, подобных этому. Я хочу захватить это из строки:

<img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" />

Какое регулярное выражение я должен использовать для его соответствия?

Я использовал следующее, но оно не работает.

"<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>"
4b9b3361

Ответ 1

Вы можете просто использовать это выражение для соответствия тегу img, как в примере:

<img([\w\W]+?)/>

Ответ 2

Ваше регулярное выражение не соответствует строке, потому что отсутствует закрытие /.

Изменить - Нет, / не требуется, поэтому ваше регулярное выражение должно работать. Но вы можете немного расслабиться, как показано ниже.

Немного изменено:

 <img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>

Ответ 3

Обратите внимание: вы не должны использовать регулярные выражения для анализа HTML по различным причинам.

<img\s+[^>]*src="([^"]*)"[^>]*>

Или используйте Jsoup...

String html = "<img class=\"img\" src=\"https://fbcdn-photos-c-a.akamaihd.net/
               hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg\" alt=\"\" />";

Document doc = Jsoup.parse(html);
Element img = doc.select("img").first();
String src = img.attr("src");

System.out.println(src);