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
Or, comme ca ne fonctionne pas d'entree de jeu, je debugge petit a petit et apparemment le pattern principal ne passe pas.
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.}
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.
Partager