In article <
kurtzlepirate-EA3...@news-3.proxad.net>,
kurtz le pirate <
kurtzl...@yahoo.fr> wrote:
>bonjour,
>
>j'ai un probl�me avec les regexpr gourmandes.
>
>j'ai des donn�es de cette forme :
>#declare elements[1][17][SYMBOLE]="Ne";
>
>
>le but est de r�cup�rer les indices entre crochets et le texte entre
>guillemet.
>
>bien sur l'expression :
> (.*)[(\d)][(\d\d)][(.*)]="(.*)"
> ne fonctionne pas.
>
>
>un peux plus �labor� :
> (.*?)\[(\d)\]\[(\d\d)\]\[(.*?)\]="(.*)"
> ne fonctionne pas mieux
>
>deja, la capture du premier indice ne fonctionne avec
> .*?\[(\d)\]
Ton probleme est mal ficele... tu veux matcher quoi ? parce qu'ici,
ca marche et ca donne le resultat attendu.
Pour le premier .*?, ca va evidemment capturer toute la chaine jusqu'au
premier [: les expressions regulieres, meme minimales, ne reviennent pas
"en arriere": elle sont gloutonnes des le debut.
Je soupconne que tes donnees sont delimitees par des mots.
Essaie un truc comme
\b(\w*?)\[(\d+)\]\[(\d+)\]\[(.*?)\]=\"(.*)\"
ca devrait etre mieux.
si tes donnees ont toujours exactement la meme tete, pense a ancrer
tes expressions des deux cotes, et a mieux preciser ce que tu veux:
^\#declare\s+(\w*)\[(\d+)\]\[(\d+)\]\[(.*?)\]=\"(.*)\"$