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 :

Probleme avec regex pour une soustraction de charactére


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 11
    Points
    11
    Par défaut Probleme avec regex pour une soustraction de charactére
    Bon le regex continue de ma faire souffrir.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void main(String args[]) {
    		Pattern pattern = Pattern.compile("\\|\\|1.*\\|\\|");
    		String s = "salut ||1 on change || on change pas || voici un test";
    		Matcher matcher = pattern.matcher(s);
    		s = matcher.replaceAll("remplace");
    		System.out.println(s);
    	}
    Ce code m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    salut remplace voici un test
    Je voudrais qu'il m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    salut remplace on change pas || voici un test
    J'ai tenté différente chose avec en particulier la soustraction des charactéres de cette maniére :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void main(String args[]) {
    		Pattern pattern = Pattern.compile("\\|\\|1(.*&&[^ \\|\\|])\\|\\|");
    		String s = "salut ||1 on change || on change pas || voici un test";
    		Matcher matcher = pattern.matcher(s);
    		s = matcher.replaceAll("remplace");
    		System.out.println(s);
    	}
    rien ne semble marché ! J'ai l'impression que supprimé de l'astérix le charactére '|' est la bonne solution mais je pense avoir du mal dans ma syntaxe du regex.
    Merci de vos réponses.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Ton problème vient du caractère * qui est trop gourmand par défaut : il va tenter de rechercher la chaine correspondante la plus grande possible.

    Dans ton cas il va prendre ceci : "||1 on change || on change pas ||"
    Ce qui correspond bien à ton pattern : ||1, n'importe quels caractères, puis ||.


    Je n'ai pas trop compris ce que tu voulais faire avec ton second pattern, mais la solution consiste simplement à utiliser un quantifieur réticent afin de faire en sorte que l'* s'arrête dès le premier résultat possible.

    Pour cela il suffit d'utiliser *? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern pattern = Pattern.compile("\\|\\|1.*?\\|\\|");
    Dès que les deux || seront trouvé, la recherche s'arrêtera


    Plus d'info : Pattern

    a++

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    OK merci je commencé a voir le truc du réticent mais je suis partie dans des délires.

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

Discussions similaires

  1. Probleme avec IE pour afficher une animation flash
    Par the magic developer dans le forum Flash
    Réponses: 0
    Dernier message: 24/07/2009, 16h29
  2. Réponses: 8
    Dernier message: 27/08/2008, 18h36
  3. Probleme avec "find" pour une map
    Par Charlock dans le forum Visual C++
    Réponses: 8
    Dernier message: 22/05/2008, 12h38
  4. Réponses: 6
    Dernier message: 11/09/2007, 18h17
  5. Directx 8 Probleme avec setrenderTarget pour un rendu du monde sur une texture
    Par zerailkiller dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 14/01/2007, 13h50

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