Bonjour tout le monde,

Je rencontre un petit souci dans mon code concernant les regex. Disons surtout que je ne maitrise pas encore correctement les jokers, semblet-t-il (?.*)

Contexte: j'ai fait un http GET d'une URL et j'ai recupere sa reponse dans un string. Je veux maintenant parser ce string pour recuperer non seulement les liens mais aussi leur description.
Exemple, le get me renvoie ceci:

blablablabla<a href="http://www.toto.com">Site de toto</a>blablabla

Je vais donc extraire le pattern principal, la balise complete, qui est <a href="http://www.toto.com">Site de toto</a>
Ensuite je vais analyser ce motif et recuperer le sous-motif entre <a href=" et "> => ca c'est le lien qui est http://www.toto.com
Enfin je vais recuperer le sous-motif entre "> et </a> => ca c'est la description qui est Site de toto

J'ai cree les patterns
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Pattern main_balise = Pattern.compile ("<a href=\"(.*?)\"</a>"); // balise complete
Pattern sub_balise1 = Pattern.compile ("<a href=\"(.*?)\">"); // recupere le lien
Pattern sub_balise2 = Pattern.compile ("\">(.*?)</a>"); // recupere la description
Matcher main_match = main_balise.matcher(body); // body est un String qui contient la reponse du serveur au http GET bien sur
while (main_match.find()) { ...etc.}
Or, comme ca ne fonctionne pas d'entree de jeu, je debugge petit a petit et apparemment le pattern principal ne passe pas.
J'ai fait un test separe avec le 2e pattern pour recuper jute le lien, lui fonctionne bien, a ma grande suprise.
Donc je ne comprends pas comment on peut recuperer l'integralite d'une balise <a href="....."> jusqu'a sa fin, c'est-a-dire </a>

Merci d'avance a qui pourrait me depanner.