begin process at 2012 02 10 19:35:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

Expression régulière POSIX abondante


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Expression régulière POSIX abondante

jeudi 30 octobre 2008 à 16:31:36 | Expression régulière POSIX abondante

sebclick

Bonjour,

Je cherche à traiter un fichier XML par un programme C à l'aide d'expression régulière pour récupérer le texte contenu entre deux balises.

Voici le fichier XML de test :
<root>
        <message>test1</message>
        <message>test2</message>
</root>

Le but est donc de récupérer le texte contenu entre les balises message, à savoir : "test1" puis "test2".

Pour cela, j'inclus la librairie regex.h, puis j'utilise les fonctions regcomp et regexec pour traiter le fichier XML.

Voici l'expression régulière que j'utilise :
<message>(.*)</message>

Problème, les expressions régulières POSIX sont abondantes et le résultat est donc : test1</message><message>test2.

Une solution serait d'utiliser l'expression régulière suivante :
<message>[^<]*</message>
Mais cela ne me convient pas, car mon fichier XML peut contenir d'autres balises entre les balises "message".

J'aimerais donc savoir s'il quelqu'un avait une solution pour que la recherche ne soit pas "abondante"

D'avance, merci.



jeudi 30 octobre 2008 à 21:14:44 | Re : Expression régulière POSIX abondante

Lucky92

Salut,

Par "abondant", tu veux dire "greedy"/"avide", c'est bien ça ?
Si c'est bien ça, de mémoire, il me semble que tu peux rendre les quantifieurs "nongreedy", en  utilisant le  symbole "?".
toto(.*)titi renvoie la plus grande chaîne commençant par toto et finissant par titi, alors que toto(.*?)titi renvoie la plus petite.

Mais c'est à vérifier et puis c'est pas sûr que posix accepte cette syntaxe.

Cordilalement.
jeudi 30 octobre 2008 à 21:26:35 | Re : Expression régulière POSIX abondante

sebclick

Merci Lucky92 pour ta réponse.

En effet, par abondant, je voulais dire "greedy"

J'ai testé ce que tu proposes :
Avec les fonctions regcomp et regexec, ça ne fonctionne pas, par contre, cela fonctionne correctement en perl. Mais c'est surement dû au fait que Perl utilise les expressions PCRE...

Pour info, j'utilise regcomp avec le flag REG_EXTENDED.
J'ai fait un test sans, et l'expression régulière ne fonctionne pas du tout.

Je continue à chercher malgré tout.
jeudi 30 octobre 2008 à 21:31:27 | Re : Expression régulière POSIX abondante

Lucky92

Sinon, à moins que tu sois très attaché à la bibliothèque POSIX, tu peux tenter ta chance avec la bibliothèque regex de boost.


Cette discussion est classée dans : fichier, xml, expression, balises, régulière


Répondre à ce message

Sujets en rapport avec ce message

lire un fichier XML [ par angelique ] Bonjour,Je suis débutante et je voudrai lire un fichier XML en C++, c'est à dire pouvoir récupérer certaines infos qui sont après les balises, pour m' lire un fichier XML [ par angelique ] Bonjour,Je suis débutante et je voudrai lire un fichier XML en C++, c'est à dire pouvoir récupérer certaines infos qui sont après les balises, pour m' XML en C++ [ par The_Legacy ] Bonjour tout le monde,Je fais appel à votre aide car je suis dans un cas désespéré. Je ne suis pas un pro du C++, disons que je m'en sors, mais je doi Créer un fichier XML en C et pas en C++ [ par djailz ] J'aimerais créer une petit exe qui transformes mon csv en xml le tout en C.Est ce possible???Cordialement. ecrire une fonction en c++ [ par Armandopoulos ] Salut,Comment puis ecrire une fonction en C++, qui doit memoriser un objet d une classe dependamment le l utilisateur, soit dans un fichier xml ou dan lire du XML à partir de VC++ [ par samki ] Bonjourje connais rien en XML,enfin je viens de voir le format d un fichier XML. et je dois extraire des informations de ce fichier.je sais pas commen Modifier un FICHIER XML [ par ced09 ] Bonjour, dans mon code j'arrive a lire et ecrire tout  le fichier xml, mais je voudrais faire des modification dans le noeud principale sans que sa ch Envoi d'un fichier XML par le protocole HTTP [ par Tof ] Bonjour tout le monde,J'aurais voulu savoir comment envoyer un fichier XML par l'intermédiaire du protocole HTTP en utilisant la méthode POST.Merci d' Ecrire une valeur et sa clé dans un fichier XML en c++ ? [ par Armandopoulos ] Salut !! J ai bien savoir comment je peux ecrire un parser en c++ pour y mettre des valeurs et leurs clés pour pouvoir les lire apres.Je serais vraime lire et ecrire un fichier en xml en c++ [ par Armandopoulos ] salut ! Des Parsers XML pour C++,j en ai deja vu plusieurs sur google tels que Xerces c++, expat, libxml++ et tant d autres,c est bien.Ce que moi jZai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales