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

Langage Java Discussion :

Difficulté avec Regex


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut Difficulté avec Regex
    Bonjour,

    J'ai quelque difficulté a utiliser les expressions régulière.

    Voila mon probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private String val1 ="{1234;02;02;33;33}test;hh$$ qsdfghj {2334;02;02;33;34}test;hh$$ sefdsfdsfsdfds  {1234;02;02;33;33}test;hh$$ ";   
     
        public void Tx() { 
            Pattern p = Pattern.compile("([{][0-9]{4}[;][0-9]{2}[;][0-9]{2}.*[$]{2})+");
            Matcher m = p.matcher(val1);
            boolean b = m.matches();
            if(b) {
                for(int i=0; i<=m.groupCount(); i++) {
                    System.out.println("Groupe " + i + " : " + m.group(i));
                }
            }
    Je veux extraire d'un chaîne de caractère tout les groupes de type {4 int;2 int F1;2 int F2;correspond aus nombrex params F1} Texte; (Nombre de param correspond aux nombres F2)$$ (Se termine par $$).
    Entre ces groupes il peux il y a du texte. J'ai essayer de faire une petite fonction sans grand résultat.

    Si vous pouvez m'aidé ?

  2. #2
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Perso j'ai pas tout compris à ton problème, à la structure de ta chaîne et au résultat attendu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Oui désolé cela n'était pas trop explicite.

    La chaîne de caractère commence par { suivit de 4 chiffres séparé par un ; suivit par 2 chiffres séparés par un ; suivit par 2 chiffre séparés par un ; suivit des paramètres tous séparé par des ; ce termine par } suivit de paramètres tous séparés par des ; se termine en fin par $$

    Exemple : {1234;02;01;params02-1;params02-2}params01-1$$

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Veux-tu récupérer {1234;02;01;params02-1;params02-2}params01-1$$ comme un bloc, ou souhaites-tu également récupérer les sous-ensembles 1234 02 01 params02-1 params02-2, etc... ?

    Nicolas

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Re,
    Exemple : {1234;02;02;33;33}test;hh$$ test1 {2334;02;02;33;34}test;hh$$ $^mljJKml {1234;02;02;33;33}test;hh$$

    Je veux recupéré par exemple dans cette chaine :
    1 Groupe : {1234;02;02;33;33}test;hh$$
    2 Groupe : {2334;02;02;33;34}test;hh$$
    3 Groupe : {1234;02;02;33;33}test;hh$$

    Apres pour les 2 groupes test1 et $^mljJKml je pense que je pourais y arriver .

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Serait-il suffisant d'identifier tous les blocs de la forme {...$$ ?

    Ou bien veux-tu également t'assurer que la structure interne des blocs est bonne :
    {4chiffres;2chiffres;2chiffres[;nimportequoi]*}nimportequoi[;nimportequoi]*$$

    Désolé de ces questions. C'est dans le but de bien comprendre ton besoin...
    Nicolas

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    J'ai juste besoin d'identifier {1234;01;02;Des caracteres ... se termine par $$
    Comme la taille des ; sont fixe je peux par la suite effectué un .substring(1,2)

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    OK. Dans ce cas, vérifie le code ci-dessous :

    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
    // Nicolas_75
    // lundi 19 février 2007
    // pour http://www.developpez.net/forums/showthread.php?p=1772208
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class Test {
     
        public static void main(String[] args) {
     
            String inputString = "{1234;02;02;33;33}test;hh$$ test1 {2334;02;02;33;34}test;hh$$ $^mljJKml {1234;02;02;33;33}test;hh$$ ";
            String pattern = "\\{\\d\\d\\d\\d;\\d\\d;\\d\\d;\\S*\\$\\$";
            Matcher matcher = Pattern.compile(pattern).matcher(inputString);
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
        } 
    }
    Chez moi, il donne :
    {1234;02;02;33;33}test;hh$$
    {2334;02;02;33;34}test;hh$$
    {1234;02;02;33;33}test;hh$$

  9. #9
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut Formatter
    essaie avec Formatter.matcher() et tu passes les param Regex en argument du matcher. les paramètres que tu désires sont en général numérotés 1$ 2$ 3$ resp. pour l'argument new String[]{param1, param2, param3} et donc tu devrais passer auparavant les paramètres de ta chaîne String = val dans un String.substr() avec les indexOf ';' que tu donnes comme séparateurs de paramètres.

    Regarde un peu la doc de java.util.Formatter...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Parfait j'ai implémenter ca dans mon application et cela fonctione parfaitement ^^

    Merci a tous

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Pour ma part, je t'en prie.

Discussions similaires

  1. Difficultés avec une regex ou charset
    Par lecroquant dans le forum Langage
    Réponses: 0
    Dernier message: 08/01/2012, 14h00
  2. [PowerShell] Difficultés avec les regex
    Par julie75 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 10/10/2011, 14h11
  3. [Regex] Difficulté avec des mots accentués
    Par p1xl_01 dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2011, 16h51
  4. Réponses: 10
    Dernier message: 22/10/2010, 18h37
  5. Difficultés avec TMenuItem.OnDrawItem
    Par ybruant dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/01/2005, 11h07

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