Ответ 1
Вы можете просто использовать это выражение для соответствия тегу img, как в примере:
<img([\w\W]+?)/>
Я хочу захватить тег 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*['\"]([^'\"]+)['\"][^>]*>"
Вы можете просто использовать это выражение для соответствия тегу img, как в примере:
<img([\w\W]+?)/>
Ваше регулярное выражение не соответствует строке, потому что отсутствует закрытие /
.
Изменить - Нет, /
не требуется, поэтому ваше регулярное выражение должно работать. Но вы можете немного расслабиться, как показано ниже.
Немного изменено:
<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>
Обратите внимание: вы не должны использовать регулярные выражения для анализа 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);