EXPRESSIONS RÉGULIÈRES EN C++ AVEC ATL

Signaler
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
Messages postés
17
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
6 juillet 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34164-expressions-regulieres-en-c-avec-atl

Messages postés
17
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
6 juillet 2009

vraiment utile, merci.
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Pas de problème, il faut partager les trucs utiles ;).
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

encore plus intéréssant, je sens que je vais plus avoir de fonction de parsage d'argument bientot, celle la ferra parfaitement l'affaire :-D
Merci pour cette source !
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Je laisse les pros des expressions régulières t'aiguiller sur la bonne syntaxe ^^ mais en tout cas ça peut faire exactement ce que tu demandes.

Voilà un exemple avec une URL :

CAtlRegExp<> reUrl;

REParseError status = reUrl.Parse(
"({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?" );
if (REPARSE_ERROR_OK == status)
{

CAtlREMatchContext<> mcUrl;
if(reUrl.Match(
"http://search.microsoft.com/us/Search.asp?qu=atl&boolean=ALL#results",
&mcUrl))
{
for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups;
++nGroupIndex)
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);

ptrdiff_t nLength = szEnd - szStart;
printf("%d: "%.*s"\n", nGroupIndex, nLength, szStart);
}
}

}
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

tres tres tres intéréssant, ça peut aussi permettre de parser une chaine de caractere ?
(exemple lien://IP|Taille|Nom|)
Un peu comme l'inverse de sprintf( y'a bien une commande qui fais ça mais tellement mal que bon ...) ?