Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je cherche une aide précieuse pour une regex que je ne maitrise pas...
voici le modele:
^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:
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
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
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:
^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
Bonjour,
Tu dois en fait faire le changement dans chaque bloc, et non juste pour le premier !
Essaye cette regexp :
^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
Myfred a écrit:
Merci,
je viens de tester, mais c'est exactement le meme resultat que l'autre
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
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:
recherche/recherche-type-cintre-et-frome-marque-kapos-couleur-orange-taille-3
avec un seul mot oui, ca fonctionne...
Hors ligne
Ah oui, là ça devient de suite plus complexe !
Désolé, mais j'atteins les limites de mes (maigres) connaissances en regexp... :-/
Hors ligne