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

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Ta variable flux est un inputstream.

    Il faut stocker chaque ligne lue dans un StringBuilder et te baser là dessus pour faire ton découpage

    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
     
    StringBuilder texte = new StringBuilder();;
     
    		try{
    		// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    		// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    		// est correctement instancié (évite les NullPointerException)
    		BufferedReader buff = new BufferedReader(new FileReader("fichierCSH.txt"));
     
    		try {
    		String line;
    		// Lecture du fichier ligne par ligne. Cette boucle se termine
    		// quand la méthode retourne la valeur null.
    		while ((line = buff.readLine()) != null) {
    		texte.append(line);
    		}
    		} finally {
    		// dans tous les cas, on ferme nos flux
    		buff.close();
    		}
    		} catch (IOException ioe) {
    		// erreur de fermeture des flux
    		System.out.println("Erreur --" + ioe.toString());
    		}
    puis ensuite, texte.toString pour le découpage

  2. #22
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    D'accord donc c'est a cause du imputstream...

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
     
    		StringBuilder texte = new StringBuilder();;
     
    				try{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader("fichierCSH.txt"));
     
    				try {
    				String line;
    				// Lecture du fichier ligne par ligne. Cette boucle se termine
    				// quand la méthode retourne la valeur null.
    				while ((line = buff.readLine()) != null) {
    				texte.append(line + "\n");
    				}
    				} finally {
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				} catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    				}
     
    				System.out.println(texte.toString());
     
     
     
    				Pattern pat = Pattern.compile( "^(.*)#<.*#>(.*)$");
    				Matcher m = pat.matcher(texte);
     
    				while (m.find()){
    					System.out.println("DEBUT");
    					System.out.println(m.group(1));
    					System.out.println("MID");
    					System.out.println(m.group(2));
     
    				}
     
     
    	}
    }
    J'ai toujours la lecture du fichier OK mais au niveau du découpage sa coince.. pourtant le matcherest bien là


    dans (fichierCSH.txt il y a le sring texte )

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Matcher m = pat.matcher(texte.toString());
    Essayes comme ça

  4. #24
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par eulbobo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Matcher m = pat.matcher(texte.toString());
    Essayes comme ça
    No toujours pas ...

  5. #25
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    J'suis aussi coincer car je peux pas utiliser la méthode split car j'utilise un stringbuilder..

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Poste ton code complet, parce que c'est un peu dur là de voir ce qui ne marche pas ^^

  7. #27
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par eulbobo Voir le message
    Poste ton code complet, parce que c'est un peu dur là de voir ce qui ne marche pas ^^
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		 // lecture fichier CSH
    		StringBuilder texte = new StringBuilder();
     
    				try{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader("lilo.txt"));
     
    				try {
    				String line;
    				// Lecture du fichier ligne par ligne. Cette boucle se termine
    				// quand la méthode retourne la valeur null.
    				while ((line = buff.readLine()) != null) {
    				texte.append(line + "\n");
    				}
    				} finally {
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				} catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    				}
     
    				System.out.println(texte.toString());
     
     
     
    				Pattern pat = Pattern.compile( "^(.*)#>.*#<(.*)$");
    				Matcher m = pat.matcher(texte);
     
    				while (m.find()){
    					System.out.println("DEBUT");
    					System.out.println(m.group(1));
    					System.out.println("MID");
    					System.out.println(m.group(2));
     
    				}
     
     
    	}
    }
    le fichier lilo.txt contient :
    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

    mais quand je remplace texte.append(line + "\n"); par texte.append(line);
    c'est déjà un peu mieux

  8. #28
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    tiens ce code là est mieux :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		 // lecture fichier CSH
    		StringBuilder texte = new StringBuilder();
     
    				try{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader("lilo.txt"));
     
    				try {
    				String line;
    				// Lecture du fichier ligne par ligne. Cette boucle se termine
    				// quand la méthode retourne la valeur null.
    				while ((line = buff.readLine()) != null) {
    				texte.append(line );
    				}
    				} finally {
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				} catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    				}
     
    				System.out.println(texte.toString());
     
     
     
    				Pattern pat = Pattern.compile( "^(.*)#>.*#<(.*)$");
    				Matcher m = pat.matcher(texte);
     
    				while (m.find()){
    					System.out.println("\n" + "DEBUT" + "\n");
    					System.out.println(m.group(1));
    					System.out.println("\n"+"MID" + "\n");
    					System.out.println(m.group(2));
     
    				}
     
     
    	}
    }

    le problème c'est juste le \n et aussi j'aimerai remplacer la chaine de caractère entre #> et #< par ce que je veux.

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    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
    46
    47
    48
    49
    50
    51
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		 // lecture fichier CSH
    		StringBuilder texte = new StringBuilder();
     
    				try{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader("lilo.txt"));
     
    				try {
    				String line;
    				// Lecture du fichier ligne par ligne. Cette boucle se termine
    				// quand la méthode retourne la valeur null.
    				while ((line = buff.readLine()) != null) {
    				texte.append(line );
    				}
    				} finally {
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				} catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    				}
     
    				System.out.println(texte.toString());
     
    				String fullText = texte.toString();
    				String rpl = "chaine de caractère remplacant ce qu'il y a entre #< et #>";
     
    				fullText = fullText.replaceFirst("(?s)#<.*?#>", rpl);
    				System.out.println(fullText);
     
    	}
    }

  10. #30
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par eulbobo Voir le message
    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
    46
    47
    48
    49
    50
    51
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
     
    public class ClasseTest {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		 // lecture fichier CSH
    		StringBuilder texte = new StringBuilder();
     
    				try{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader("lilo.txt"));
     
    				try {
    				String line;
    				// Lecture du fichier ligne par ligne. Cette boucle se termine
    				// quand la méthode retourne la valeur null.
    				while ((line = buff.readLine()) != null) {
    				texte.append(line );
    				}
    				} finally {
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				} catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    				}
     
    				System.out.println(texte.toString());
     
    				String fullText = texte.toString();
    				String rpl = "chaine de caractère remplacant ce qu'il y a entre #< et #>";
     
    				fullText = fullText.replaceFirst("(?s)#<.*?#>", rpl);
    				System.out.println(fullText);
     
    	}
    }
    Après compilation il n'y a pas eu de remplacement ... lol c'est un calvaire ^^
    mais javou ton idée est bonne sa devrai marcher normalement

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    S'il n'y a pas eu de remplacement, c'est qu'il doit y avoir un soucis dans le fichier qui te sert de source (ce qui fait que l'expression régulière de recherche ne trouve rien à remplacer)

  12. #32
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    Pourtant nan
    ci joint j'ai mi mon fichier lilo.txt
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Et pourtant si, il y a un bien un soucis dans ton fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #> 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
    Ca ne correspond pas à ce que tu as demandé comme bornes, à savoir #< au début et #> à la fin (c'est l'inverse là)

  14. #34
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut
    Salut eulbobo
    Tu as raison ça marche
    en faite oui déjà d'une mon texte n'était pas bon car j'avais inversé les #> et #<.
    et aussi je comprenais mal le résultat de la console :

    => j'ai supprimé la ligne : System.out.println(texte.toString()); pour ne voir que le résultat.
    et j'ai rajouter \n dans : texte.append(line+"\n" ); pour que le texte soit plus propre et donc plus facile à lire

    sa à bien fonctionner sinon mais du coup pas besoin de regex alors ici

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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