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 :

Expression régulière pattern


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut Expression régulière pattern
    Bonjour j ai un fichier qui liste des points en 3D c a d qu il possède un numéro de point suivi de ses coordonnées X Y Z. J'arrive à les parsers mais il est possible qu'il y ai un entete au début qui pourrait contenir des chiffres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #Oktal Fichier :  F16_.bdd Bdd Version 2.0
        1    1.2617499828338623    0.725695013999939    0.08221299946308136
        2    3.4561800956726074    -0.8960570096969604    0.06181500107049942
        3    3.4561800956726074    -0.9510160088539124    0.07097499817609787
        4    -1.2603299617767334    -1.7589099407196045    0.06372000277042389
        5    -3.456170082092285    -1.8488600254058838    0.051357999444007874
    J'utilise donc la classe pattern et j'ai un soucis avec l'identifiant du point qui peut se confondre avec des chiffres dans l'entete. Donc j'ai crée un pattern qui prendrait une suite de chiffre comprises entre des espaces (" " ou "\t") en utilisant le \s mais cela n'a pas marché.

    Quelqu un aurait-il une sollution?

    Merci

    Laurent

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Salut,

    pourrais-tu nous montrer l'expression reguliere que tu utilises et qui ne fonctionne pas STP ?

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String decimal_pattern = "(-?\\d+(<a href="file://\\.\\d" target="_blank">\\.\\d</a>+)?)";
    String line_pattern = "^\\t(<a href="file://\\d" target="_blank">\\d</a>+)\\t"
    <div style="margin-left:40px">+ decimal_pattern + "<a href="file://\\t" target="_blank">\\t</a>"
    + decimal_pattern + "<a href="file://\\t" target="_blank">\\t</a>"
    + decimal_pattern + "$";</div>
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern pattern1 = Pattern.compile("\\s(\\d+)\\s");
    Nemek ca marche pas la tienne. Il ne prend pas l'identifiant car tu lui dis au debut ^\\t et y a soit un espace soit une tabulation de part et d'autre de l'identifiant.

  5. #5
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Essaye avec ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ \t]*([1-9]+)[ \t]+([\\-1-9\\.]+)[ \t]+([\\-1-9\\.]+)[ \t]+([\\-1-9\\.]+)
    On peut surement faire plus court mais ca devrait marcher.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut
    Le truc c que j ai fait 2 pattern. Un pour l'identifiant un pour les coordonnées car au début j'avais tout regroupé mais j'avais un probleme de transtypage de float vers int.
    Donc j'ai séparé et pour les coordonnées ca marche nikel avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+(E[+-][0-9]{2})?)");
    E[+-] car il peut y avoir l exponentielle.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut
    je vous donne mon code en entier ca ira plus vite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    while ((ligne = buff.readLine()) != null)
                { 
                    Trouve=false;
     
                    Tab_sommets som = new Tab_sommets();
     
                    Pattern pattern1 = Pattern.compile("[\t ]\\d+[\t ]");
                    Matcher matcher1 = pattern1.matcher(ligne);
                    if(matcher1.find()){
     
     
                        number[0]=matcher1.group();
                        System.out.println("tey :"+number[0]);
                        //enleve les espaces et les tabulations
                        number[0] = number[0].replaceAll(" ","");
                        number[0] = number[0].replaceAll("\t","");
                    }
     
                    Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+(E[+-][0-9]{2})?)");
                    Matcher matcher = pattern.matcher(ligne);
     
     
                    i=1;
                    while (matcher.find()) {
                        number[i] = new String(matcher.group());
                        i++;
                        Trouve=true;
                        // Traitement
                    }
                    if(Trouve){
                        som.setId(Integer.parseInt(number[0]));
                        som.setX(Double.parseDouble(number[1]));
                        som.setY(Double.parseDouble(number[2]));
                        som.setZ(Double.parseDouble(number[3]));
     
                        tab_pts.add(som);
                    }
                }

Discussions similaires

  1. Expressions régulières en Java,Pattern et Matcher
    Par Malatok dans le forum Général Java
    Réponses: 8
    Dernier message: 08/09/2010, 15h08
  2. JAXB (xjc) et pattern / Expression régulière
    Par MaGEoS dans le forum Persistance des données
    Réponses: 6
    Dernier message: 20/04/2010, 13h05
  3. [RegEx] Recherche du bon pattern pour une expression régulière
    Par erehcab dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2010, 13h06
  4. définition de pattern pour les expressions régulières
    Par hadler dans le forum Général Java
    Réponses: 2
    Dernier message: 04/12/2009, 14h23
  5. les patterns et les expressions régulières
    Par metwa dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/06/2009, 19h17

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