Salut,
J'ai la trame NMEA ""$GPGSV,3,1,12,08,79,134,40,10,66,289,41,27,56,059,31,25,33,053,08*7A"
Je souhaite extraire via les expressions rationnelles "GPGSV", toutes les valeurs entre virgules et le "7A" final.
J'ai comme pattern "^\$([A-Z]{2,})(,([^,*])+)*\*([0-9a-fA-F]{2})" :
-la ligne commence par $ => ^\$
-au moins 2 lettres en majuscules de A à Z => ([A-Z]{2,})
-une série de valeurs entre "," de quantité indéfinie => (,([^,*])+)*
-un "*" => \*
-une valeur hexadécimale => ([0-9a-fA-F]{2})
Après regcomp, ma structure regex_t me dit qu'il y a 4 sous éléments :
Après regexec je retrouve ces éléments qui sont :
-la trame complète
-GPGSV
-,08 (la dernière valeur entre ",")
-*7A
Où sont passées toutes les autres valeurs entre ","?
kim Le 23/02/2008 à 15:25 essaye voir en échappant tes points ?

Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi
Une capture ne capture forcément qu'un élément à la fois, donc si tu captures à l'intérieur d'un *, ben il oublie tous sauf le dernier.
Tu récupères toute la séquence avec ton expression régulière et tu utilises un split pour découper ça en un tableau (avec les virgules comme séparateurs). (Tu travailles en quel langage exactement?)
en C++, mais je ne souhaite pas utiliser de lib diverses et variées genre Boost ou autres ; seulement ce que propose la STL
Pourtant QStringList::split est exactement ce qu'il te faut...
Tu peux utiliser une boucle avec std::strtok (dans cstring) pour splitter une chaîne de caractères en utilisant seulement la libc et la libstdc++.
Oui QString permet de splitter facilement et obtenir un QStringList mais comme je te l'ai dit je ne souhaite pas "alourdir" avec des lib en tous genre.
J'ai finalement fait une boucle et ça fonctionne nickel.
et en extrayant bêtement la sous-chaine entre GPGLL et le * de la fin?