Re: regexp

Top Page

Reply to this message
Author: jeanluctux
Date:  
To: guilde
Subject: Re: regexp
Patrice Karatchentzeff a écrit :
> Le 20 avril 2009 16:11, Nicolas Morey-Chaisemartin
> <devel@???> a écrit :
>
> [...]
>
> > Je connais pas du tout perl mais si tu force ton premier bloc (chaine 1)
> > à finir par un caractère non espace tu devrais t'en sortir non?
> > En gros (.*\S)(\s+)(\d+)
>
> Yes... bien vu : merci.
>


> le .* est trop glouton et comprend les espaces jusqu'au premier chiffre...
> PK


Je pense aussi que la solution au dessus est élégante.
Je marque quand même ci-desous une autre .... parce que tu as parlé de gloutonnerie.

Avec ceci : (.*)(\s+)(\d+)
le premier membre '(.*)' sera glouton .... parce que c'est le défaut.
Et puis le deuxième '(\s+)', il est glouton aussi mais il ne lui restera les miettes.
Donc, un seul espace.

Par contre, avec ceci : (.*?)(\s+)(\d+)
On donne instruction grâce au '?' au premier membre (.*?) de ne pas être
glouton. Donc, il se sert la ceinture. Et s'il y a plusieurs espaces,
c'est le deuxième (\s+), qui lui aussi est glouton qui va tout avaler.

Donc, je pense que (.*?)(\s+)(\d+) devrait marcher aussi.

Sinon, en anglais, ils disent 'greedy' et c'est ce mot clef qu'il faut utiliser pour
chercher. Moi, je disais plutot "gourmand" en traduction basique mais c'est vrai
que glouton, ça sonne mieux.

Bon appétit.
Jean-Luc.