web-dev-qa-db-fra.com

Comment puis-je utiliser l'expression régulière pour saisir une balise «img»?

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*['\"]([^'\"]+)['\"][^>]*>"
16
eng.ahmed

Vous pouvez simplement utiliser cette expression pour faire correspondre une balise img comme dans l'exemple:

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

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*['\"]([^'\"]*?)['\"][^>]*?>
10
user557597

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);
7
hwnd