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

avec Java Discussion :

Problème avec regexp


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut Problème avec regexp
    Salut alors voila , je veux extraire une partie de mon texte en utilisant l'API regex mais j'ai un petit peu de mal!
    texte à traiter :

    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
    20
    21
    22
    23
    24
    #bzert
    #polipolipoli 
    #sdfgldhfsg_85465ffdgdfgf
    #sdfsdf-988898_iuujsdf
     
    bnv 111
     
    #----------------------------------------------------------------------
    #
    # Variables
    #----------------------------------------------------------------------
    #> hfghjhgjgh
    Non ! Ne pars pas je t'en prie. Reste s'il te plait. Je me suis comporté comme une idiote, pardonne moi. Non laisse-moi finir s'il te plait. Hier quand tu m'as avoué tes sentiments j'ai pris peur, non parce que je ne ressentais pas la même chose mais parce que j'avais peur de souffrir. J'ai peur de laisser mon bonheur être tes mains. Tu serais le seul responsable de sa destruction si un jour tu décides de t'en aller et je ne veux pas devenir dépendante de quelqu'un.
    #>dfgdfgdfgdfgdf
    #----------------------------------------------------------------------
    # Variables
    #----------------------------------------------------------------------
    tyjtyjy
     
    #----------------------------------------------------------------------
    # Repertoires
    #----------------------------------------------------------------------
    *  
    endif
    en faite je veux recuperer ce qu'il y a avant #< et ce qu'il y a après #>

    j'ai penser a utiliser sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     String texte="fichierCSH.txt";
    		 Pattern p=Pattern.compile("");
    		 Matcher m=p.matcher(texte);
    		 while(m.find()) 
    		    System.out.println(m.group(1));
    mais je ne sais pas quoi mettre dans le pattern p au niveau du motif

    help me please

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    J'ai pensé à mettre ça pour commencer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     String texte="fichierCSH.txt";
    		 Pattern p=Pattern.compile("^#bzert, #>$");
    		 Matcher m=p.matcher(texte);
    		 while(m.find()) 
    		    System.out.println(m.group(1));
    ^#!/bin/csh -xv, #>$ => ma chaîne commence par #bzert avec le (^) et se termine par #> avec le (&)

    ça pourraît être bon nan?

  3. #3
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Comme on dit, "j'avais un problème, et j'ai essayé de le résoudre avec une expression régulière... Maintenant j'ai deux problèmes..."

    Essayes avec ça :
    "#<(.*)#>"

    Sachant que ça ne marchera pas avec ton test actuel vu qu'il n'y a PAS de #<


    Et non, ton exemple ne marchera pas et fera une erreur à l'exécution : quand tu appelles m.group(x), il faut que tu aies défini un "groupe de capture" : ce que tu mets en parenthèses (sachant que quand tu ne mets rien, ça fait le groupe 0)

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    Salut eulbobo

    peut tu m'expliquer le ""#<(.*)#>" stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sachant que ça ne marchera pas avec ton test actuel vu qu'il n'y a PAS de #<
    Oups ! désolè j'avais même pas fais gaff

    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
    20
    21
    22
    23
    24
    #bzert
    #polipolipoli 
    #sdfgldhfsg_85465ffdgdfgf
    #sdfsdf-988898_iuujsdf
     
    bnv 111
     
    #----------------------------------------------------------------------
    #
    # Variables
    #----------------------------------------------------------------------
    #< hfghjhgjgh
    Non ! Ne pars pas je t'en prie. Reste s'il te plait. Je me suis comporté comme une idiote, pardonne moi. Non laisse-moi finir s'il te plait. Hier quand tu m'as avoué tes sentiments j'ai pris peur, non parce que je ne ressentais pas la même chose mais parce que j'avais peur de souffrir. J'ai peur de laisser mon bonheur être tes mains. Tu serais le seul responsable de sa destruction si un jour tu décides de t'en aller et je ne veux pas devenir dépendante de quelqu'un.
    #>dfgdfgdfgdfgdf
    #----------------------------------------------------------------------
    # Variables
    #----------------------------------------------------------------------
    tyjtyjy
     
    #----------------------------------------------------------------------
    # Repertoires
    #----------------------------------------------------------------------
    *  
    endif
    Là c'est mieux

  5. #5
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    #<(.*)#>

    Ca se lit "tu cherches la suite de caractères "#<"n ensuite il y a (dans un groupe de capture) : .*, à savoir n'importe quel caractère 0 à n fois, jusqu'à ce qu'on tombe sur la suite de caractères "#>"

    Et ensuite, tu lis ce qu'il y a dans les parenthèses (le groupe de capture 1)


    Et du coup je me rends compte que tu veux ce qu'il y a AVANT #< et apres #>, et pas ce qu'il y a entre les deux...
    Du coup ça répond pas à ta question


    Essayes avec : "^(.*)#<.*#>(.*)$"
    Puis fais un m.group(1) pour récupérer le début, et m.group(2) pour récupérer la fin

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    "#<(.*)#>"
    en faite là ce motif récupère ce qu'il y a entre #< et #> ( je viens de faire le text )

    moi je veux le contraire je veux récuperer ce qu'il y a avant le #< et ce qu'il y a après le #> .
    pour ensuite concatener mon nouveau texte que je placerai a place de ce qu'il y a entre le #< et #>.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    Et du coup je me rends compte que tu veux ce qu'il y a AVANT #< et apres #>, et pas ce qu'il y a entre les deux...
    Du coup ça répond pas à ta question
    oui lol mais pas grave c'est bon à savoir ! j'en aurai surement besoin un jour...

  8. #8
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    J'étais en train d'éditer quand je m'en suis rendu compte ^^

    Essayes avec : "^(.*)#<.*#>(.*)$"
    Puis fais un m.group(1) pour récupérer le début, et m.group(2) pour récupérer la fin

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    D'accord ! merci eulbobo

    juste deux question :
    tu peux me réexpliquer le : ^(.*)#<.*#>(.*)$

    2eme question :
    mon code affiche pas le groupe 2 :

    code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		 String texte=
    							"#polipolipoli" +
    							"#sdfgldhfsg_85465ffdgdfgf"+
    							"#sdfsdf-988898_iuujsdf"+
     
    							"bnv 111"+
     
    							"#----------------------------------------------------------------------"+
    							"#"+
    							"# Variables"+
    							"#----------------------------------------------------------------------"+
    							"#< hfghjhgjgh"+
    							"Non ! Ne pars pas je t'en prie. Reste s'il te plait. Je me suis comporté comme une idiote, pardonne moi. Non laisse-moi finir s'il te plait. Hier quand tu m'as avoué tes sentiments j'ai pris peur, non parce que je ne ressentais pas la même chose mais parce que j'avais peur de souffrir. J'ai peur de laisser mon bonheur être tes mains. Tu serais le seul responsable de sa destruction si un jour tu décides de t'en aller et je ne veux pas devenir dépendante de quelqu'un."+
    							"#>dfgdfgdfgdfgdf"+
    							"#----------------------------------------------------------------------"+
    							"# Variables"+
    							"#----------------------------------------------------------------------"+
    							"tyjtyjy"+
     
    							"#----------------------------------------------------------------------"+
    							"# Repertoires"+
    							"#----------------------------------------------------------------------"+
    							"*  "+
    							"endif;";
     
     
     
    		 Pattern p=Pattern.compile("^(.*)#<.*#>(.*)$");
    		 Matcher m=p.matcher(texte);
    		 while(m.find()) 
    		    System.out.println(m.group(1));
    		 	System.out.println(m.group(2));
     
    	}
     
    }
    pourtant j'ai fais comme tu m'as dit, j'ai mis un group 2

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

Discussions similaires

  1. Problème avec "regexp"
    Par kira9744 dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/10/2009, 15h31
  2. Problème avec regexp
    Par Eye4eye dans le forum Général Python
    Réponses: 5
    Dernier message: 13/05/2008, 10h32
  3. [REGEXP] Problème avec DotAll
    Par McFoggy dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 22/11/2007, 19h03
  4. Problème avec des regexp
    Par Petitcodeur dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2006, 10h52
  5. Gros problème avec regexp
    Par dmbsys dans le forum ASP
    Réponses: 6
    Dernier message: 29/04/2006, 16h23

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