Page 1 sur 1

Expression régulière

Posté : 28 oct. 2014, 12:22
par mcrae
Bonjour,

J'ai besoin d'un regard neuf sur une expression régulière...

Le but est de récupérer ce qui est entre les balises "[g]...[/g]".
Par exemple, pour "Bonjour je m'appelle [g]Boris[/g], je suis marié à [g]Evgenia[/g] et notre fille s'appelle [g]Olga[/g]", je dois récupérer "Boris", "Evgenia" et "Olga". En gros, c'est le même principe que dans l'éditeur de ce forum !

J'ai donc la commande suivante :
preg_match_all("/\[g\](.*)\[\/g\]/",$str,$matches,PREG_SET_ORDER);

Le problème est que mon tableau $matches contient un seul élément (et non pas les 3 qu'il devrait contenir), qui commence au premier "[g]" et se termine au dernier "[/g]".
Concrètement, $matches contient "Boris[/g], je suis marié à [g]Evgenia[/g] et notre fille s'appelle [g]Olga".

Comment écrire la pattern pour que chaque élément soit trouvé ?

Re: Expression régulière

Posté : 28 oct. 2014, 12:58
par jojolapine
Bonjour,

Tu peux te renseigner sur la "gourmandise" des opérateurs : http://www.lumadis.be/regex/tuto_pcre.php#gourmand

Bon courage ;)

Re: Expression régulière

Posté : 28 oct. 2014, 13:12
par mcrae
Parfait, j'ai ma réponse, il suffit d'ajouter un "?" comme expliqué dans ton lien :

preg_match_all("/\[g\](.*?)\[\/g\]/",$str,$matches,PREG_SET_ORDER);

Merci !