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

C# Discussion :

sortir une ligne d'un regex [Débutant]


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Amateur
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Amateur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 0
    Points
    0
    Par défaut sortir une ligne d'un regex
    Bonjour à tous,
    Voila mon problème : je voudrais lire des lignes d'un fichier texte qui me triera toutes les lignes et les inserera plus tard dans une base de donnée.
    J' ai réussi à lire le fichier texte.
    J ai également réussi à compter le nombre de lignes qui contient mon mot que j ai choisi.
    Ce que je n'arrive pas à faire est d'afficher la ligne qui contient le mot.
    En fait il faudra que je décortique la ligne complète une fois trouvé pour l'insérer dans une base de donnée.

    Voici mon 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
    Comptage++;
     
                string URLChat = File.ReadAllText(@"C:\Users\" + Username + @"\Documents\Gestyopia\TXT\URLChat.txt");
                string fileName = @"" + URLChat + "";
                TextReader Lecture;
                // Ouverture du fichier Chat.log et lecture ligne par ligne du fichier
                Lecture = new StreamReader(fileName);
                string lignes = Lecture.ReadToEnd();
                textBoxContentFichier.Dispatcher.Invoke(
                       System.Windows.Threading.DispatcherPriority.SystemIdle,
                       new Action(
                         delegate()
                         {
                             textBoxContentFichier.Text = lignes;
                             NbrLignes = this.textBoxContentFichier.LineCount;
     
                         }
                     ));
     
                // Recherche mot par lignes
                NbrTueCreature = 0;
                string Creature = "a tué une créature";
     
                MatchCollection matches = Regex.Matches(lignes, Creature, RegexOptions.Multiline);
     
                foreach (Match match in matches)
                {
                    NbrTueCreature++;  // me compte bien le nombre trouvé
     
     
                 // Ne m'affiche pas les lignes trouvé mais le contenu du fichier
                    if (lignes.Contains(Creature))
                    {
                        textBoxCreature.Dispatcher.Invoke(
                           System.Windows.Threading.DispatcherPriority.SystemIdle,
                           new Action(
                             delegate()
                             {
                                 textBoxCreature.Text = lignes;
     
     
                             }
                         ));
                    }
                }
     
     
                Lecture.Close();
                Lecture.Dispose();
    Si quelqu un connaitrais la réponse se serais avec grand plaisir.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise plutôt File.ReadAllLines pour récupérer les lignes, ce sera plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string[] lines = File.ReadAllLines(fileName);
    var regex = new Regex(Creature);
    foreach(string line in lines)
    {
        if (regex.IsMatch(line))
        {
            ...
        }
    }
    Soit dit en passant, ça ne sert à rien d'utiliser une regex pour un truc aussi simple, un String.Contains fera aussi bien l'affaire...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Amateur
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Amateur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    merci vais test ca se week

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Amateur
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Amateur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Marche Nickel Merci

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Amateur
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Amateur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    voila j ai de nouveau un soucis,
    Le code marche Nickel mais la je n'arrive pas a extraire la ligne en decorticage.
    Un exemple la ligne est comme ceci (a savoir que chaque ligne est differrente et qu il faut que je cree une function qui me cherche les principaux attribut :

    2012-01-30 17:24:02 [Local] [] rondo rondo bondo a tué une créature (Atrox Young) d'une valeur de 153 PED !!

    Voila il faut que je sorte la date et l'heure
    le nom du joueur par exemple rondo rondo bondo
    ///// a tué une créature ma servi à trouver cette ligne /////
    le nom de la creature : Atrox Young
    et la valeur du gain : 153 PED

    Pour la date et heure j ai mis un regex du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var regexTime = new Regex("^([0-9]{4})-([0-9]{2})-([0-9]{2})$");
                        if (regexTime.IsMatch(line))
                        {
                            textBoxDecortChasse.Dispatcher.Invoke(
                           System.Windows.Threading.DispatcherPriority.SystemIdle,
                           new Action(
                             delegate()
                             {
                                 textBoxDecortChasse.Text = "Date et heure : " + Convert.ToString(regexTime);
                             }
                         ));
                        }
    Mais voila rien ne s affiche j avoue suis un peu pommé avec les regex car je debute avec.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Amateur
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Amateur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Ca y est j ai trouvé
    En fait il fallait faire un match de la ligne
    Voici le code si ca peut aider pour recuperer la date et l heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Match TempsMA = Regex.Match(line, @"([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})");

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2014, 10h00
  2. [RegEx] Problème pour trouver la bonne regex remplacement d'une ligne
    Par shughen dans le forum Langage
    Réponses: 12
    Dernier message: 20/06/2011, 18h33
  3. regex pour supprimer une ligne commençant par une lettre
    Par stpaul04 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 03/02/2011, 22h04
  4. Problème pour sortir une ligne d'une table
    Par atapi dans le forum SQL
    Réponses: 2
    Dernier message: 03/06/2010, 13h43
  5. [AC-2003] Sortir des lignes de la base selon une condition
    Par liop49 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 22/03/2010, 10h12

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