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

Collection et Stream Java Discussion :

[RegExp] Help, je sèche


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut [RegExp] Help, je sèche
    Bonjour !

    Voici la source à analyser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <TD vAlign=top align=left> NOM</TD>
        <TD vAlign=top noWrap align=middle>  PRENOM</TD>
        <TD vAlign=top align=middle>  LIEU</TD>
        <TD vAlign=top align=middle>
     
    		NUMTEL
     
    	</TD>
        <TD vAlign=top align=middle>DATE</TD>
        <TD vAlign=top align=middle>HEURE</TD>
        <TD vAlign=top align=middle>SALLE</TD>
    Et je veux en extraire les données figurant en majuscules (en réalité ces données peuvent contenir de tout : lettres, chiffres, espaces etc...

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    motif="\\s*<TD vAlign=top.*>(.*)</TD>";
    regex=Pattern.compile(motif);
    result=regex.matcher(source);
     
    while (result.find()){
       System.out.println(result.group(1));
    }
    L'ennui, c'est que ça ne trouve pas le NUMTEL, car pour cette donnée, j'ai des retours à la ligne apres le ">" et avant le "</TD>....contrairement aux autres.

    Quand je fais regex=Pattern.compile(motif, Pattern.DOTALL), là y'a tout ou presque qui foire.

    Je vous épargne tous mes autres essais infructueux...je sèche.

    A l'aide, svp :-)

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Tu dois utiliser le quantifieur restrictif ? après les .* et bien utiliser le flag DOTALL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    motif="<TD vAlign=top.*?>.*?</TD>";
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Ca marche nickel. :-)

    C'est pas très clair cette histoire de "?" dans la JavaDoc je trouve ... Y'a une explication simple ?

    Encore merci en tous cas
    A+

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    En fait, dans ce cas, le '?' prend la chaine correspondante la plus courte.
    Prenons par exemple la chaine "<a>b<c>d<e>". On veut récupérer les différentes balises et donc l'expression régulière qui nous vient naturellement est : "<.*>".
    Cependant tu remarques que plusieurs chaines correspondent au pattern :
    • <a>
    • <c>
    • <e>
    • <a>b<c>
    • <c>b<e>
    • <a>b<c>d<e>
    Avec l'expression régulière "<.*>" c'est la chaine de caractères corespondante la plus longue qui est prise soit "<a>b<c>d<e>". Pour prendre la chaine de caractères la plus courte il faut rajouter le ? "<.*?>"
    ce qui donnera "<a>" (puis "<b>" puis "<c>").

    Bon j'espère que je suis assez clair, il me semblait qu'adiGuba avait posté un message où il une expliquer de façon beaucoup plus claire et concise ce que j'ai essayé de dire mais je n'ai pas retrouvé ce post .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Merci !

    C'est déja beaucoup plus parlant que "Greedy" "Reluctant" autres

    PS : les balises sont <a> <c> <e> dans ton exemple (au lieu de <a> <b> <c>)

    a+

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par absolut75
    PS : les balises sont <a> <c> <e> dans ton exemple (au lieu de <a> <b> <c>)
    corrigé
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

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

Discussions similaires

  1. help les regexp !
    Par pilpoil123 dans le forum Général Python
    Réponses: 16
    Dernier message: 17/05/2010, 22h42
  2. help please
    Par atom267 dans le forum CORBA
    Réponses: 2
    Dernier message: 24/01/2003, 10h41
  3. [Kylix] fichiers help kylix2 oe ??
    Par sdoura2 dans le forum EDI
    Réponses: 2
    Dernier message: 29/11/2002, 14h32
  4. Help :Problème de clignotement
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/08/2002, 10h53
  5. Help InnoSetup ou Installshield
    Par buzz dans le forum Outils
    Réponses: 4
    Dernier message: 30/07/2002, 15h26

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