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 :

aide expression régulières


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut aide expression régulières
    bonjour,
    j'ai écrit ce bout de code qui permet de remplacer un mot dans une chaîne de caractères :
    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
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class Test 
    {
    public Test(){};
    public static void main(String[] args) 
    {
    	Pattern p1 = Pattern.compile("trouver[a-zA-Z]");
    	Matcher m1 = p1.matcher("trouvera trouver< trouvert trouver?");
    	String s1 = m1.replaceAll("...");
    	System.out.println(s1);
    }
    }
    donc ça ne supprime lemot trouve sue s'il est suivit d'une lettre alphabet.
    à l'exécution ça m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... trouver< ... trouver?
    ce que je veux c'est comment supprimer le mot trouve sans la lettre qui le suit donc je veux avoir le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ...a trouver< ...t trouver?
    merci d'avance.
    Dernière modification par Invité ; 12/04/2008 à 12h07.

  2. #2
    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,



    Je vois deux solutions :


    La première consiste à créer un groupe autour de cette lettre, tout simplement en la mettant entre parenthèse. Ensuite il suffit d'utiliser un $1 dans la chaine de remplacement pour répercuter la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Pattern p1 = Pattern.compile("trouver([a-zA-Z])");
    	Matcher m1 = p1.matcher("trouvera trouver< trouvert trouver?");
    	String s1 = m1.replaceAll("...$1");
    	System.out.println(s1);
    Si tu as plusieurs groupes entre parenthèses il faut utiliser $1, $2, $3... pour atteindre les différents groupes de parenthèses (de gauche à droite).




    La seconde solution consiste à utiliser la structure (?=X) qui permet de vérifier une condition sans qu'elle ne soit prise dans le pattern. Pratique en particulier pour vérifier qu'un élément est présent avant ou après le pattern :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Pattern p1 = Pattern.compile("trouver(?=[a-zA-Z])");
    	Matcher m1 = p1.matcher("trouvera trouver< trouvert trouver?");
    	String s1 = m1.replaceAll("...");
    	System.out.println(s1);

    a++

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci pour la réponse.
    est si la lettre était avant le mot par exemple :

  4. #4
    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
    Ben pareil... sauf que tu met le ([a-zA-Z]) ou le (?=[a-zA-Z]) devant le mot...

    a++

  5. #5
    Invité
    Invité(e)
    Par défaut
    merci beaucoup

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Citation Envoyé par mehdiing Voir le message
    merci pour la réponse.
    est si la lettre était avant le mot par exemple :
    Bah la meme chose mais dans l'autre sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Pattern p1 = Pattern.compile("([a-zA-Z])trouver");
    Matcher m1 = p1.matcher("atrouver trouver< trouvert trouver?");
    String s1 = m1.replaceAll("$1...");
    System.out.println(s1);

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

Discussions similaires

  1. Aide Expression régulière
    Par Stef784ever dans le forum Langage
    Réponses: 11
    Dernier message: 15/04/2011, 11h16
  2. Aide Expression Régulière
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2011, 15h49
  3. aide expression régulière
    Par neg12 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2011, 16h39
  4. aide expression régulière
    Par viny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2008, 18h55
  5. Aide expression régulière
    Par As2piK dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 02/10/2007, 10h33

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