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

Visual C++ Discussion :

Visual C++ 6 et expression régulière


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 62
    Par défaut Visual C++ 6 et expression régulière
    Bonjour, je dois utiliser Visual c++ 6 pour parser de gros fichiers texte, et sans expression régulière c'est quasiment mission impossible.
    Malheureusement, malgré mes recherches, je ne trouves pas de classes d'expression régulière exploitable avec le c++ de krosoft.

    Quelqu'un aurait-il un pointeur ?

    Merci.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut, Boost::Regex devait convenir

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 62
    Par défaut J'ai trouvé mieux
    DeelX http://www.regexlab.com/en/deelx/ est une librairie qui se présente sous la forme d'un .h , ce qui évite de jouer avec les options du compilateur ou encore de précompiler je ne sais quoi.

    J'ai fait une classe qui permet de l'utiliser simplement :
    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
     
    CChaine::CChaine(CString re)
    {
    	 regex = re;
    }
     
     
    CChaine::~CChaine()
    {
     
    }
     
     
    void CChaine::registerRE(CString re) {
     
    }
     
     
    bool CChaine::Match(CString src){
     
    	source = src;
    	CRegexpT <char> regexp(regex, IGNORECASE | MULTILINE);
    	result = regexp.Match(src);
     
    	return result.IsMatched();
    }
     
     
    int CChaine::nbcaptures() { // Pour la dernière chaîne source entrée
    	return result.MaxGroupNumber();
    }
     
     
    CString CChaine::Captures(int nbcap) {
    	CString res;
     
    	const char * tmpsrc;
    	int i;
    	tmpsrc = (LPCTSTR)source;
     
    	for (i = result.GetGroupStart(nbcap) ; i < result.GetGroupEnd(nbcap) ; i++)
    		res.Insert(i-result.GetGroupStart(nbcap),tmpsrc[i]);
     
     
    	return res;
    }

  4. #4
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut petit oubli
    j'ai recuperer deelx, mais avec ta fonction, il manque le .h

    je comble ce vide..


    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
    // Chaine.h: interface for the CChaine class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #if !defined(AFX_CHAINE_H__549D7293_DB72_455F_B339_6E5A575F2FA4__INCLUDED_)
    #define AFX_CHAINE_H__549D7293_DB72_455F_B339_6E5A575F2FA4__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #include "deelx.h"
     
    class CChaine  
    {
    public:
    	CChaine(CString re);
    	virtual ~CChaine();
    	void registerRE(CString re);
    	bool Match(CString src);
    	int nbcaptures();
    	CString Captures(int nbcap);
    	CString regex;
    	CString source;
    	MatchResult result;
    };
     
    #endif // !defined(AFX_CHAINE_H__549D7293_DB72_455F_B339_6E5A575F2FA4__INCLUDED_)
    pour les faineants comme moi, voila aussi le .cpp de la classe d'utilisation de deelx

    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
    60
    61
    62
    63
    64
    65
    66
    // Chaine.cpp: implementation of the CChaine class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #include "stdafx.h"
    #include "Chaine.h"
    #include "deelx.h"
     
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
     
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
     
    CChaine::CChaine(CString re)
    {
    	 regex = re;
    }
     
     
    CChaine::~CChaine()
    {
     
    }
     
     
    void CChaine::registerRE(CString re) {
     
    }
     
     
    bool CChaine::Match(CString src){
     
    	source = src;
    	CRegexpT <char> regexp(regex, IGNORECASE | MULTILINE);
     
     
     
    	result = regexp.Match(src);
     
    	return result.IsMatched();
    }
     
     
    int CChaine::nbcaptures() { // Pour la dernière chaîne source entrée
    	return result.MaxGroupNumber();
    }
     
     
    CString CChaine::Captures(int nbcap) {
    	CString res;
     
    	const char * tmpsrc;
    	int i;
    	tmpsrc = (LPCTSTR)source;
     
    	for (i = result.GetGroupStart(nbcap) ; i < result.GetGroupEnd(nbcap) ; i++)
    		res.Insert(i-result.GetGroupStart(nbcap),tmpsrc[i]);
     
     
    	return res;
    }
    pour les puristes, oui, je sais, pas tout mettre en public, mais ca aide bien pour les phases de controle et de mise au point..
    nota, j'ai laissé la fonction vide registerRE, je vois pas trop encore à quoi ca pouvait servir..

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

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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