Page 1 sur 1

Aide avec les regex

Posté : 17 déc. 2007, 23:44
par PatrickDrouin
Bonjour,

Je n'arrive pas à bien cerner ce que preg_match_all me retourne. Voici le code :
$str="aabcc";
$pattern="/((a+)b?(c+))/";

preg_match_all($pattern,$str,$matches);
print_r($matches[0]);
Je m'attendrais aux retours suivants:

Code : Tout sélectionner

a aa c cc abc aabc abcc aabbcc
Mais j'ai toujours les chaînes maximales :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => aabcc ) [1] => Array ( [0] => aabcc ) [2] => Array ( [0] => aa ) [3] => Array ( [0] => cc ) )
Est-ce possible de demander à PHP de retourner les sous-chaînes valides? J'ai dû louper un truc...

Merci!
Patrick

Re: Aide avec les regex

Posté : 19 déc. 2007, 21:40
par Vaedan
Je m'attendrais aux retours suivants, mais j'ai toujours les chaînes maximales
Euh le retour obtenu correspond bien à ton regex !
Est-ce possible de demander à PHP de retourner les sous-chaînes valides? J'ai dû louper un truc...
Non ça n'est pas possible, du moins pas à ma connaissance !

Posté : 20 déc. 2007, 11:32
par Berzemus
A la limite, tu peux changer l'ordre de la variable de résultat avec les flags. (pêtit lien)

Posté : 20 déc. 2007, 12:07
par Ryle
Et si tu collais ta parenthèse capturante sur la lettre seulement ? (sans inclure le quantificateur j'entends) :
"/((a)+b?(c)+)/"
peux pas l'tester, mais en théorie tu devrais récupérer chaque "a", et rien ne t'empêche si tu veux l'ensemble également d'en coller deux paires : ((a)+)