Le 21 mars 2013 12:56, Frédéric <frederic.mantegazza@???> a écrit :
> Hello,
Salut,
> Petite questions aux guru regexp...
>
> Je voudrais parser un fichier stl. En ascii, c'est de la forme :
>
> solid _40x10
> facet normal 0.000000e+000 0.000000e+000 1.000000e+000
> outer loop
> vertex 1.286803e+001 2.957990e+001 1.200000e+001
> vertex 1.173648e+001 2.984808e+001 1.200000e+001
> vertex 1.115715e+001 2.953001e+001 1.200000e+001
> endloop
> endfacet
> facet normal 0.000000e+000 0.000000e+000 1.000000e+000
> outer loop
> vertex 1.115715e+001 2.953001e+001 1.200000e+001
> vertex 1.173648e+001 2.984808e+001 1.200000e+001
> vertex 1.058145e+001 2.998308e+001 1.200000e+001
> endloop
> endfacet
> ...
> endsolid _40x10
>
> Je voudrais pouvoir récupérer des groupes :
>
> - le(s) groupe(s) de lignes compris entre 'solid/endsolid'
> - le(s) groupe(s) de lignes compris entre 'facet/endfacet'
> - le(s) groupe(s) de lignes compris entre 'solid/endsolid'
> - le(s) groupe(s) de lignes compris entre 'outer loop/endloop'
Tu veux faire quoi exactement ? Parce que j'ai l'impression que tu
imposes une solution pour arriver à un but qui pourrait le faire
autrement...
Sinon, c'est un simple test à faire :
Tu parses et tu testes :
if ($line =~ /regex1/ {
@group1 = (@group1, $line);
next if ($line =~ /regex2/
}
C'est du Perl : je ne parle qu'un langage d'humain ;-)
> Après, une fois le groupe de lignes de vertex isolé, pas de souci pour
> trouver les coordonnées.
>
> Ça fait un moment que je m'arrache les cheveux ; visiblement, je n'arrive
> pas à gérer les retours à la ligne.
>
> Si vous pouviez me donner un tuyau sur la façon de procéder, ce serait
> sympa.
>
> Merci d'avance.
>
> PS : j'utilise les regexp de python, qui, si je ne dis pas de conneries,
> ont été unifiées avec celles de perl.
Non : les regex de Perl sont devenus un standard (via perlre) et on
été intégrées dans tous les langages (qui conchient tous Perl mais qui
ne savent faire ce que fait Perl ;-) )
PK
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:p.karatchentzeff@free.fr
|,4- ) )-,_. ,\ ( `'-' http://p.karatchentzeff.free.fr
'---''(_/--' `-'\_)