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 :

problème avec regex


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut problème avec regex
    bonjour,
    j'ai un string: "blablabla=blabla==blabla";
    je voudrais le trensformer en: "blablabla = blabla==blabla";
    mais pas en "blablabla = blabla = = blabla";

    j'ai essayer String.replaceAll("={1}"," = "); mais ça n'a pas marché

    ya t-il une autre alternative ?
    merci

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    c'est le "==" qui te pose le probleme remplace "==" par "#" (ou un autre caractere inutilisé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    machaine=machaine.replaceAll("==","#");
    machaine=machaine.replaceAll("="," = ");
    machaine=machaine.replaceAll("#","==");
    voila

  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,



    Tu peux utiliser les constructions spéciales pour spécifier que le caractère = ne doit ni être précédé ni suivi par un autre caractère = :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str.replaceAll("(?<!=)=(?!=)", " = ")
    a++

  4. #4
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    merci, moi j'ai le document de
    Expressions régulières
    en Java
    avec l’API Regex Hugo Etiévant Dernière mise à jour : 05 août 2004
    il ne parle pas des "Special constructs (non-capturing)", ce document n'a t-il pas de mise à jour ???

  5. #5
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    j'ai un autre petit problème :

    voila le type de String :

    "blablabla(ab,ce)blablabla(a+b)blablablabla(aaaaa);"

    je voudrais extraire seulement les parenthèses qui ont a l'inerieure des virgule ","
    j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replaceAll("\\([\\w\\,]*\\)","\\$");
    en les remplacant par $ juste pour tester mais ja reçois ça comme resultat

    "blablabla$blablabla(a+b)blablablabla$;"

    le truc c'est que je veux qu'il effectue le replacement SEULEMENT SI virgule il y a


    merci pour l'aide !!

  6. #6
    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
    C'est normal car ceci [\\w\\,]* signifie : un caractère parmi a-zA-Z_0-9 (\\w) ou une virgule, le tout zéro ou plusieurs fois...

    Donc il n'y a pas d'obligation sur la présence de la virgule...

    Il faut bien sûr la rendre obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replaceAll("\\([\\w,]*,[\\w,]*\\)","\\$");
    a++

  7. #7
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    super merci trop gentil,


    PS: je ne vais pas mettre de résolu e risque fort d'avoir besion de toi

  8. #8
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut me revoila ....
    voila le topo :

    je veux recoller des lignes :

    si j'ai par exemple
    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
     
    {
            mbi->motion_type = MC_FRAME;
            vmc = dist2(oldref+(imin>>1)+width*(jmin>>1),mb,
                        width,imin&1,jmin&1,16);
          }
          else
          {
            mbi->motion_type = MC_FIELD;
            dmc = dmcfield;
            vmc = dist2(oldref+(tsel?width:0)+(imint>>1)+(width<<1)*(jmint>>1),
                        mb,width<<1,imint&1,jmint&1,8);
            vmc+= dist2(oldref+(bsel?width:0)+(iminb>>1)+(width<<1)*(jminb>>1),
                        mb+width,width<<1,iminb&1,jminb&1,8);
          }
    je voudrai le remettre sous cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {
            mbi->motion_type = MC_FRAME;
            vmc = dist2(oldref+(imin>>1)+width*(jmin>>1),mb,width,imin&1,jmin&1,16);
          }
          else
          {
            mbi->motion_type = MC_FIELD;
            dmc = dmcfield;
            vmc = dist2(oldref+(tsel?width:0)+(imint>>1)+(width<<1)*(jmint>>1),mb,width<<1,imint&1,jmint&1,8);
            vmc+= dist2(oldref+(bsel?width:0)+(iminb>>1)+(width<<1)*(jminb>>1),mb+width,width<<1,iminb&1,jminb&1,8);
          }
    autrement dit si le ligne C n'est pas fini correctement cad elle ne fini pas avec ";" ou ")" je recolle ce qui se trouve en dessous

    j'ai "un peut" reussi a faire ça avec les faleux if else mais j'ai pas réussi avec les regex, est'ce que c'est faisable??

    merci

  9. #9
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    Citation Envoyé par adiGuba
    a++
    allé quoi ne me laisse pas tomber!!!... voila une autre:

    comment en enléve le ligne vide
    que ce soit des espace des tab. et retour a la ligne ou une ligne qui ne contien que le retour a la line !

  10. #10
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    cette solution marche, peut on faire mieux ??,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    BufferedReader in = new BufferedReader(new StringReader(monFichier)); 
             Pattern p1 = Pattern.compile("(^\\s*$)");
            try {
                while((ligne=in.readLine())!=null){
                    Matcher m1 = p1.matcher(ligne);
                       if (!m1.find())
                          fileWithoutBlankLine += ligne+"\n";
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
    faire mieux veux dire ne pas lire le fichier ligne par ligne

    merci

  11. #11
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300

  12. #12
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    Citation Envoyé par trax44
    merci traxx44, mais cella on l'a déja trouvé, il s'agit a present du poste #8 et du poste #9


    merci en tout cas

Discussions similaires

  1. problème avec Regex
    Par saigon dans le forum Ruby
    Réponses: 2
    Dernier message: 13/10/2008, 17h50
  2. Problème avec regex non trouvé
    Par Damien69 dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2008, 13h32
  3. problèmes avec Regex sous c#
    Par santana2006 dans le forum C#
    Réponses: 2
    Dernier message: 24/01/2007, 15h42
  4. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 14h50
  5. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48

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