Je veux récupérer une balise img
à partir du texte renvoyé à partir de données JSON comme ça. Je veux saisir ceci d'une chaîne:
<img class="img" src="https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-frc3/1239478_598075296936250_1910331324_s.jpg" alt="" />
Quelle est l'expression régulière que je dois utiliser pour la faire correspondre?
J'ai utilisé ce qui suit, mais cela ne fonctionne pas.
"<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>"
Vous pouvez simplement utiliser cette expression pour faire correspondre une balise img comme dans l'exemple:
<img([\w\W]+?)/>
Votre expression régulière ne correspond pas à la chaîne, car il manque la fermeture /
.
Modifier - Non, le /
n'est pas nécessaire, donc votre expression rationnelle aurait dû fonctionner. Mais vous pouvez le détendre un peu comme ci-dessous.
Légèrement modifié:
<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>
Veuillez noter que vous ne devez pas utiliser d'expressions régulières pour analyser le HTML pour les différentes raisons
<img\s+[^>]*src="([^"]*)"[^>]*>
Ou utilisez 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);