Salut,
L'extraction est faite jusqu'au dernier guillemet surtout parce que tu demandes d'extraire jusqu'un " (ou ') suivi d'un >, donc c'est forcément le dernier (sauf s'il y avait une espace entre le " et le >, ou pas de " du tout sur l'attribut...). Il faut donc ajouter un .* avant le >. Mais ça ne suffirait pas, car la recherche est "gourmande" par défaut : il faut utiliser un quantifier reluctant (le ? parès le .* de ton groupe de capture).
Pattern p = Pattern.compile("<a href=['\"](.*?)['\"].*>(.*)</a>");
Mais il y a tellement d'autres cas à traiter que tu auras toujours d'autres exceptions qui vont complexifier ton expression. Il est beaucoup plus simple d'utiliser un parser html, tel que jsoup par exemple.
Partager