IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Regex pour extraire liste amis ?


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut Regex pour extraire liste amis ?
    salut,
    je saouhaite ecrire une regex pour extraire les listes d'amis.
    La réponse html de la page contient des lignes du genre :
    ........./user.php?id=id_mon_ami">mon_ami</a>..........
    je souhaite extraire :id_mon_ami et mon_ami.

    j'ai essayé plusieurs :
    (user.php?id=)?(\\d)+(\">)?(\\w)+(</a>)?
    +(user.php?id=)?(\\d)+(\">)?(\\w)+(</a>)?+
    mais rien
    aidez-moi s'il vous plaît
    merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Je suis pas un foufou de la regexp donc ça vient pas tout seul... mais a blanc je peux te proposer un tripatouillage qui devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      String reponseHTML = "...../user.php?id=id_mon_ami>mon_ami</a>......" ;
      reponseHTML = reponseHTML.substr(indexoff("user.php?id=*>")) ;
      //ici il te reste user.php?id=id_mon_ami">mon_ami</a>..........
     
      reponseHTML = reponseHTML.substr(indexoff(">")) ;
      //Maintenant il te reste mon_ami</a>..........
     
      String mon_ami = reponseHTML.substr(0, indexoff("</a>")) ;
      //mon_ami contient donc le nom de ton ami. Et reponseHTML contient éventuellement les autres amis s'il y en a plusieurs par ligne (donc tu boucles)
    Alors comme je l'ai dit c'est du tripatouillage tout ce qu'il y a de plus moche, mais a un ajustement près (un ptit +1/-1 dans les indexof) ça devrait marcher... en attendant que quelqu'un propose mieux

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Déjà il y a une erreur à ce niveau là : user.php?id=
    Cela signifie que le dernier p de "php" est optionnel, ce dont je doute.

    Ensuite tu fait la même chose avec plein de bloc () qui se termine par un "?"
    Tous ces blocs sont vraiment optionnel ???


    Enfin je te conseille vivement de découpé tes expressions en petit bout et de les commenter. Par ce que sinon c'est illisible.


    D'après les infos que tu as donnés, je pense que ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	Pattern pattern = Pattern.compile(
    		"user\\.php\\?id="	// "user.php?id=
    		+ "(\\d+)"		// un nombre (id_mon_ami)
    		+ "\">"			// la fin du tag html ">
    		+ "(\\w+)"		// un mot (mon_ami)
    		+ "</a>"		// le tag de fermeture </a>
    	);
    a++

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    salut,
    merci pour vos réponses adiGuba et Mopmop.
    j'ai pu récupérer la liste d'amis avec la regex :
    "user\\.php\\?id=(\\d+)\">([\\w|\\s|\\d])+"
    mais sous la forme :
    user.php?id=45455455">nom_ami1
    user.php?id=999999999999">nom_ami2
    ....
    comment récupérer juste le id et le nom ? :
    45455455 nom_ami1
    999999999999 nom_ami2
    ........
    j'ai utilisé group(1) et group(2), ça donne toujours le même résulat
    merci

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Par défaut
    merci c'est résolu

    effectivement c'est avec group(1) pour les id et group(2) pour les nom_amis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  2. Réponses: 1
    Dernier message: 19/08/2008, 21h13
  3. [RegEx] Regex pour extraire des noeuds XML
    Par lagotonio dans le forum Langage
    Réponses: 6
    Dernier message: 18/04/2008, 14h52
  4. Regex pour extraire un lien entre crochets
    Par elwario91 dans le forum Bibliothèque standard
    Réponses: 1
    Dernier message: 26/03/2008, 11h34
  5. [RegEx] Inverser REGEX pour extraire date
    Par MagicManu dans le forum Langage
    Réponses: 2
    Dernier message: 20/12/2007, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo