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 :

Supprimer les blancs à l'aide d'une expression régulière


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Supprimer les blancs à l'aide d'une expression régulière
    Bonjour tout le monde,

    Je développe en JAVA et j'ai un soucis avec les RegEx.
    Le problème :
    Je cherche à construire une expression régulière qui supprime tous les blancs de ma JSP (que j'ai mis dans un stringBuffer), mais je souhaite pas supprimer les blancs à l'intérieur des Tags.

    J'ai essayé ceci :
    (\s)[^(<.*>)&&^(</.*>)]
    Mais évidement ça ne marche pas.

    Ma question est simple, est-il possible d'exclure une chaine (<tag></tag>) de ma Sting (le StringBuffer contenant ma jsp) ?

    Merci de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Tu as la méthode String.replaceAll(String regex, String replacement).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Oui c'est bien ça...
    Je fais :

    final String regex = "(\\s)[^(<.*>)&&^(</.*>)]"

    StrinBuffer sb = new StrinBuffer();
    FileReader reader = new FileReader(MaJsp) ;

    while((len = reader.read(cbuff)) >= 0) {
    sb.append(cbuff, 0, len) ;
    }

    String s = sb.toString().replace(regex, "");

    Et je récupère s pour l'écrire dans dans un autre fichier sans espaces inutiles !
    Mais je récupère pas un fichier propre, il ne m'enlève rien.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Rectification :

    String s = sb.toString().replaceAll(regex, "");

    Pardon !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Marche à suivre :
    * protéger tes tags en les "quotant", c'est à dire en les encadrant par \Q<tag>\E
    Autrement dit tu vas faire un replaceAll("Regex pour isoler les tags", "\\\\Q$0\\\\E");
    * C'est ce nouveau regex que tu vas passer dans replaceAll(regex, "");

    Mais je ne sais pas écrire le regex pour isoler les tags
    Philippe.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'effort fournis Philippe mais je n'ai pas très bien compris la solution.
    Tu veux dire quoi par isolé les tag ? Tu veux dire les exlures ?

    Et j'ai bien peur que je ne saurai pas écrire la regex pour l'isolation des tags non plus.
    Mais je vais me pencher sur le sujet.

  7. #7
    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 : 41
    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
    Points : 5 943
    Points
    5 943
    Par défaut
    Je ne suis pas sûr que cela soit faisable avec un simple replaceAll().
    Voici une façon de faire (il y a peut-être plus simple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Pattern pattern = Pattern.compile("<.*?>", Pattern.DOTALL);
    String[] parts = pattern.split(myJsp);
    Matcher matcher = pattern.matcher(myJsp);
    StringBuilder sb = new StringBuilder();
    int index = 0;
    while(matcher.find()) {
        sb.append(parts[index].replaceAll("\\s", ""));
        sb.append(matcher.group());
        index ++;
    }
    if(index < (parts.length)) {
        sb.append(parts[index].replaceAll("\\s", ""));
    }
    String result = sb.toString();
    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

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

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    C'est exactement ce qu'il fallait le y@m's, t'assure !

    Merci aussi aux autres pour leur participation.


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

Discussions similaires

  1. [RegEx] Besoin d'aide pour une expression régulière
    Par vallica dans le forum Langage
    Réponses: 4
    Dernier message: 04/09/2007, 19h59
  2. [RegEx] Aide pour une expression réguliére.
    Par mr_keyser dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2007, 10h27
  3. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 19h04
  4. Besoin d'aide pour une expression régulière
    Par planetiss dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2006, 19h04
  5. [RegEx] Aide sur une expression régulière toute simple
    Par tchoumak dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2005, 15h46

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