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 :

les expressions régulieres en c


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Par défaut les expressions régulieres en c
    bonjour
    j'effectue un traitement sur un fichier contenant des ligne de ce genre
    X Y Z W
    chaque élément X,Y,Z,W a une taille non fixe que je veux c'est extraire les élément X Z y a t'il une façon pour faire sa avec des fonction de c merci d'avance

  2. #2
    Membre averti
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    Mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 46
    Par défaut
    Bonjour,

    Peut-être ce tutoriel peut-il t'aider :
    http://nicolasj.developpez.com/articles/regex/

    Il m'avait bien aidé dans le temps pour écrire une application gérant des expressions régulières.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Par défaut merci
    Citation Envoyé par gwenBZH Voir le message
    Bonjour,

    Peut-être ce tutoriel peut-il t'aider :
    http://nicolasj.developpez.com/articles/regex/

    Il m'avait bien aidé dans le temps pour écrire une application gérant des expressions régulières.
    merci mon ami ai d'une premier vus je ne ense pas qy'elle me permetra de extraire X Z

  4. #4
    Membre averti
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    Mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 46
    Par défaut
    Je n'ai peut-être pas bien compris ton problème, mais il me semble bien que tu arriveras à faire ce que tu veux avec ces fonctions.

    Si chaque élément X, Y, Z, W sont séparés pas des espaces (et n'en comportent pas) ou autre séparateur, des simples opérations de lecture de fichier et d'opérations sur les chaînes de caractères peuvent résoudre tes problèmes.
    (Dans tous les cas, il faudra que tu lises le fichier de toute manière)
    Ce tuto pourra t'aider :
    http://melem.developpez.com/langagec/fichiersc/

    Si les éléments sont plus complexes, je ne vois pas trop comment se passer des expressions régulières.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Par défaut je reformule mon problemme
    Citation Envoyé par gwenBZH Voir le message
    Je n'ai peut-être pas bien compris ton problème, mais il me semble bien que tu arriveras à faire ce que tu veux avec ces fonctions.

    Si chaque élément X, Y, Z, W sont séparés pas des espaces (et n'en comportent pas) ou autre séparateur, des simples opérations de lecture de fichier et d'opérations sur les chaînes de caractères peuvent résoudre tes problèmes.
    (Dans tous les cas, il faudra que tu lises le fichier de toute manière)
    Ce tuto pourra t'aider :
    http://melem.developpez.com/langagec/fichiersc/

    Si les éléments sont plus complexes, je ne vois pas trop comment se passer des expressions régulières.
    supposon que on a une chaine la suivante "X Y Z W" comment faire pour extraire les X et le Z

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut
    Citation Envoyé par selmani300 Voir le message
    supposon que on a une chaine la suivante "X Y Z W" comment faire pour extraire les X et le Z
    Tu pourrais très bien coder le parser toi-même, ce n'est pas très compliqué. Tiens, c'est un truc dans le genre que tu veux ?
    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
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <ctype.h>
     
    #define BUF_SIZE 256
     
    typedef unsigned int uint_t;
     
    void tokenize(char buf[BUF_SIZE][BUF_SIZE], const char *str) {
        size_t len = strlen(str);
        uint_t i = 0;
        uint_t cur_token = 0;
        uint_t cur_c = 0;
        for(i = 0; i < len; ++i) {
            if(isspace(str[i]) && !isspace(str[i + 1])) {
                ++cur_token;
                cur_c = 0;
            } else if(!isspace(str[i])) {
                buf[cur_token][cur_c] = str[i];
                ++cur_c;
            } else {;}
        }
    }
     
    int main(void) {
        const char *foo = "So  I heard          you   liek    mudkipz.";
        char buf[BUF_SIZE][BUF_SIZE] = {{0}};
        uint_t i = 0;
        tokenize(buf, foo);
        for(i = 0; i < 8; ++i) {
            printf("buf[%u]: '%s'\n", i, buf[i]);
        }
     
        return EXIT_SUCCESS;
    }
    Ce qui va dans ce cas-ci afficher:
    buf[0]: 'So'
    buf[1]: 'I'
    buf[2]: 'heard'
    buf[3]: 'you'
    buf[4]: 'liek'
    buf[5]: 'mudkipz.'
    buf[6]: ''
    buf[7]: ''

  7. #7
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Ou faire directement appel à la fonction strtok():
    man developpez strtok

    ;-)

  8. #8
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Par défaut
    Citation Envoyé par homeostasie Voir le message
    Ou faire directement appel à la fonction strtok():
    man developpez strtok

    ;-)
    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
     
    * /********************************************************/
        * /* */
        * /* Utilisation de STRTOK */
        * /* Permet de compter le nombre de mot de la phrase */
        * /* Permet d'extraire les différents mots */
        * /* selon le caractere "space" */
        * /* NOTA : Aucun controle dans le prog ! */
        * /* */
        * /* Créateur : Trinta */
        * /* Date de création : 04/06/2003 */
        * /* */
        * /* Version : 1.0.0 */
        * /* Date de modification : 04/06/2003 */
        * /* FREEWARE */
        * /* */
        * /********************************************************/
        *
        * #include <stdio.h>
        * #include <stdlib.h>
        * #include <string.h>
        *
        *
        * main ( )
        * {
        * char *pointeur;
        * char *separateur = { " " }; // Le séparateur
        * char *buffer;
        * char *Chaine_Entrante="bonjour je m'appelle Trinita";
        * int nb_mot=1;
        *
        * buffer = strdup ( Chaine_Entrante );
        *
        * // premier appel,
        * pointeur = strtok( buffer, separateur );
        * printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
        *
        * while( pointeur != NULL )
        * {
        * // Cherche les autres separateur
        * pointeur = strtok( NULL, separateur );
        * if ( pointeur != NULL )
        * {
        * nb_mot++; // increment du nombre de mot
        * printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
        * }
        * }
        *
        * getchar (); // pause en mode console
        *
        * return 0 ;
        * }
    j'ai trouver ceci c'est rapide est efficace

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

Discussions similaires

  1. [RegEx] Question sur les expressions régulieres
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2010, 00h41
  2. Besoin d'aide pour les expressions régulieres
    Par brahim94 dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2009, 09h31
  3. compiler les expressions régulieres ou pas?
    Par giova_fr dans le forum Débuter
    Réponses: 1
    Dernier message: 10/10/2008, 00h11
  4. [RegEx] les expression régulieres dans php
    Par stive8063 dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2008, 10h21
  5. aide sur les expressions régulieres
    Par STEPH69000 dans le forum Langage
    Réponses: 7
    Dernier message: 31/05/2006, 17h54

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