Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-06-2011 10:56:06

Myfred
Membre
Date d'inscription: 06-02-2009
Messages: 42
Site web

aide pour une regex

Bonjour,
je cherche une aide précieuse pour une regex que je ne maitrise pas...
voici le modele:

Code:

^recherche\/recherche-(?:type|rang)-(.+)(?:-marque-(.+))?(?:-couleur-(.+))?(?:-taille-(.+))?

le but ici est de capturer le type ou le rang ET OU la marque ET OU la couleur ET OU la taille.
la marque, couleur ou taille etant facultatif.

par exemple avec la chaine ci dessous:

Code:

recherche/recherche-type-cintre-marque-kapos-couleur-orange-taille-3

je suis censé capturer:
type = cintre
marque = kapos
couleur = orange
taille = 3

le problème que j'ai c'est que le (.+) qui se situe apres (?:type|rang) me capture tout...
du coup je peux pas récuperer le reste.

Quelqu'un a une idée ?
merci d'avance.

Hors ligne

 

#2 29-06-2011 11:08:16

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: aide pour une regex

As-tu essayé de remplacer (.+) par ([^-]+) c'est à dire tout sauf le tiret séparateur.

Dernière modification par Ithier (29-06-2011 11:10:10)

Hors ligne

 

#3 29-06-2011 11:14:21

Myfred
Membre
Date d'inscription: 06-02-2009
Messages: 42
Site web

Re: aide pour une regex

Ithier a écrit:

As-tu essayé de remplacer (.+) par ([^-]+) c'est à dire tout sauf le tiret séparateur.

Merci de ton aide,
j'ai donc essayé ca:

Code:

^recherche\/recherche-(?:type|rang)-([^-]+)(?:-marque-(.+))?(?:-couleur-(.+))?(?:-taille-(.+))?

sur la chaine:
recherche/recherche-type-cintre-marque-kapos-couleur-orange-taille-3

résultat:
1 seule capture: cintre

Hors ligne

 

#4 29-06-2011 12:04:42

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: aide pour une regex

Bonjour,
Tu dois en fait faire le changement dans chaque bloc, et non juste pour le premier !
Essaye cette regexp :

Code:

^recherche\/recherche-(?:type|rang)-([^-]+)(?:-marque-([^-]+))?(?:-couleur-([^-]+))?(?:-taille-([^-]+))?

Et je te conseille de faire des tests avec ces sites :
http://www.regexplanet.com/simple/index.html
http://www.annuaire-info.com/outil-refe … reguliere/

Dernière modification par f.garoby (29-06-2011 12:05:36)

Hors ligne

 

#5 29-06-2011 12:10:11

Myfred
Membre
Date d'inscription: 06-02-2009
Messages: 42
Site web

Re: aide pour une regex

Merci,
je viens de tester, mais c'est exactement le meme resultat que l'autre sad
1 capture: cintre

Hors ligne

 

#6 29-06-2011 12:25:46

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: aide pour une regex

Myfred a écrit:

Merci,
je viens de tester, mais c'est exactement le meme resultat que l'autre sad
1 capture: cintre

Bizarre...

Car en testant avec les sites que je t'ai indiqués plus haut, j'obtiens bien 4 groupes.

Pourrais-tu nous montrer le bout de code permettant de tester et, le cas échéant, de récupérer les groupes obtenus ?

Hors ligne

 

#7 29-06-2011 13:32:53

Myfred
Membre
Date d'inscription: 06-02-2009
Messages: 42
Site web

Re: aide pour une regex

ah oui j'avais omis une précision.
Le type n'est pas forcement un seul mot, dans l'exemple j'ai mis cintre, mais généralement j'ai plusieurs mot à la suite. voici une autre chaine:

Code:

recherche/recherche-type-cintre-et-frome-marque-kapos-couleur-orange-taille-3

avec un seul mot oui, ca fonctionne...

Hors ligne

 

#8 29-06-2011 14:31:44

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: aide pour une regex

Ah oui, là ça devient de suite plus complexe !
Désolé, mais j'atteins les limites de mes (maigres) connaissances en regexp... :-/

Hors ligne

 

#9 29-06-2011 14:35:25

Myfred
Membre
Date d'inscription: 06-02-2009
Messages: 42
Site web

Re: aide pour une regex

snif j'attendais ta solution avec impatience sad
merci quand meme !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages