Filtrer un string avec une regular expression

olivierroyo Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 4 septembre 2009 - 26 juin 2009 à 12:02
olivierroyo Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 4 septembre 2009 - 30 juin 2009 à 17:05
Bonjour je souhaiterai filtrer un string et enlever les caracteres non autorisés.
Pour cela ma regle de triage est definie par une expression du style : "a-zA-Z" ou "0-9_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\xFF" par exemple.

Quelqu'un aurait une idee?

merci!!!

3 réponses

cs_TeniX Messages postés 118 Date d'inscription mercredi 24 décembre 2003 Statut Membre Dernière intervention 11 décembre 2011 2
28 juin 2009 à 16:51
Slt,
Avec les fonctions <string> tu a peux prêt tout faire facilement au niveau traitement de chaine de caractère, je comprend pas ton problème.
Ciao
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
30 juin 2009 à 16:06
Salut,

Si tu veux vraiment ralentir ton programme avec des regex, regarde ce tuto, qui explique comment utiliser la partie regex de boost, librairie C++ bien connue.
0
olivierroyo Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 4 septembre 2009
30 juin 2009 à 17:05
Salut, j'ai effectivement utilise les regex:

</code>
     string newSt(_T(""));
    const string IDENTIFIER_CHARS(_T("[0-9_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\xFF]+"));
    const boost::regex regexp(IDENTIFIER_CHARS);
   
     int size = static_cast(st.size());
    for(int i = 0; i < size; i++) // Copy until end of first line
    {
        string bas2 = st.substr(i,1);
        if (boost::regex_match(bas2, regexp)) // si ca matche c'est que le char est valide donc on l'ajoute
        {
            newSt += bas2;
        }
    }
    return newSt;
</code>

desole j'ai pas trouve l eformatage pour le code
0
Rejoignez-nous