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

Entrée/Sortie Java Discussion :

Regex en Java (ordre d'apparition)


Sujet :

Entrée/Sortie Java

Vue hybride

sampaiX Regex en Java (ordre... 16/06/2010, 13h24
sweetdreamer Le problème vient du fait que... 22/06/2010, 12h45
hibour ton expression régulière est... 22/06/2010, 13h38
sampaiX et donc comme j'ai 2 autre... 26/06/2010, 12h07
thebloodyman Salut, Surtout pas.... 26/06/2010, 14h29
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 64
    Par défaut Regex en Java (ordre d'apparition)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     String s="truch much cacao marque <img alt=   \"zzz.jpg\" src=\"zzzz\"/> lala  <img alt=\"amine.jpg\" src=\"amine\"/>";
    		Pattern pattern4 = Pattern.compile("<img\\s*(src\\s*=\\s*(.*?)|alt\\s*=\\s*(.*?)|width\\s*=\\s*(.*?)|height\\s*=\\s*(.*?))*\\s*/>");
     
    	  Matcher m= pattern4.matcher(s);
    	  while(m.find()){
     
    		  for(int i=1;i<m.groupCount()-1;i++){
    			System.out.println(m.group(i)); 
     
    		 }
    		  System.out.println("shop");
     
    	  }
    Bonjour j'ai essayé ce code mais ç la fin sa me sors ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    src="zzzz"
    "zzzz"
    "zzz.jpg" 
    shop
    src="amine"
    "amine"
    "amine.jpg" 
    shop
    j'aimerai savoir comment je fais pour faire apparaitre le "alt" car il ne s'affiche pas merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    Le problème vient du fait que pattern ne retient que le contenu de la derniere correspondance de la parenthese capturante. Pour tout recuperer il faut une expression reguliere par attribut de la balise a recuperer. Un code qui marche serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Pattern monImage = Pattern.compile("<img\\s*(src\\s*=\\s*(.*?)|alt\\s*=\\s*(.*?)|width\\s*=\\s*(.*?)|height\\s*=\\s*(.*?))*\\s*/>");
    Matcher m = monImage.matcher(s)
    if(m.find){
    Pattern alt = Pattern. compile("alt\\s*=\\s*(.*?)");
    Matcher mAlt = alt.matcher(m.group(0));
    if (mAlt.find()){
    traiterAlt();
    }
     
    }

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    ton expression régulière est incorrecte tu prend soit la valeur de l'attribut src soit celle de alt
    faudrai une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RegExp="<img\s*(src\s*=\s*(.*?)\s+alt\s*=\s*(.*?))|
    (alt\s*=\s*(.*?)\s+src\s*=\s*(.*?)))\s*/>"
    NB:Faut dédoublé les '\'

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 64
    Par défaut
    et donc comme j'ai 2 autre attribut (width et height) je dois faire toute les combinaison?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    et donc comme j'ai 2 autre attribut (width et height) je dois faire toute les combinaison?
    Surtout pas.
    Ce que tu recherches est trop flexible pour le mettre dans une regex lisible et maintenable.

    Quel est le but de ta méthode ?
    J'ai l'impression que ce que tu veux, c'est vérifier que tu as bien une img et ensuite récupérer certains attributs-valeurs des balises img d'une chaine en entrée.

    Si c'est le cas, tu vas te compliquer beaucoup les choses avec une regex.
    Une regex c'est pour capturer une expression régulière.
    Le fait que l'ordre joue un rôle sur beaucoup d'éléments de ta regex, je ne pense pas que le terme régulier convienne

    Utilise une api de manipulation xml (ex:jdom,sax...), ca sera bien plus simple, lisible et maintenable.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 64
    Par défaut
    c'est ce qu'on m'a dit, d'ailleur j'ai posté sur un autre sujet dans ce forum, que je cherche un parser html et j'en ai trouvé un qui est:
    "html parser" seulement j'ai pas su l'utiliser car je n'ai pas trouvé d'exemple simple de parcour d'une arborecence html et je dis bien "HTML" et non "XHTML" c'est pour cela que je ne peux utiliser un parser xml comme sax ou jdom

Discussions similaires

  1. gérer la bibliography par ordre d'apparition dans le texte
    Par RO_student dans le forum Bibliographies - Index - Glossaires
    Réponses: 4
    Dernier message: 29/08/2012, 22h01
  2. Probleme algo ou regex en java
    Par ox@na dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 24/06/2008, 20h52
  3. Réponses: 8
    Dernier message: 08/02/2008, 23h13
  4. Ordre d'apparition de formulaire
    Par vg-matrix dans le forum Langage
    Réponses: 1
    Dernier message: 04/02/2008, 08h45
  5. [MySQL] Changer l'ordre d'apparition de mes articles
    Par sandddy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/10/2007, 12h41

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