|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 94 ![]() |
Bonjour j'ai une regex comme ci dessous:
Code :
le problème c'est que j'arrive pas à capturer ces 4 valeurs. un exemple avec cette chaine: recherche/recherche-type-chausettes-couleur-orange-taille-3 il fait une seul capture: chausettes-couleur-orange-taille-3 alors qu'il devrait capture uniquement chausettes pour le type et 3 pour la taille. Quelqu'un à une solution ? merci de votre aide |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Étudiant Inscription : juin 2011 Messages : 55 ![]() |
Le coté complexe d'une regex c'est ca !
Alors premièrement je t'explique d'ou viens le probleme. (.+) va chercher à prendre le maximum de caractères pour lesquels c'est vrai ! (donc dans ton cas et c'est le risque d'un (.*) ou (.+), il va renvoyer toute la fin et considérer que la suite n'est pas présente - à cause des '?') (lorsque la position est identique, l'algorithme renvoie la plus longue chaine répondant au critère.) Pour contrer ce fait, (je ne sais pas trop comment ca marche), il faut rajouter un '?' comme ca (.+?), ce qui va être le plus court avant le prochain caractères désigné. Ainsi, pour 'je code en php et en html'; '#je(.+)en#' va renvoyer ' code en php et ' '#je(.+?)en#' va renvoyer ' code ' Cependant je ne suis pas certain que dans ton cas cela fonctionne car tous les termes suivants sont en ( )? Donc si tu as à peu près compris, sert toi de (.+?) et des tirets qui reviennent entre chaque mot de ta chaine de caractères Bonne chance ! |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 94 ![]() |
C'est une super piste, je vais me pencher dessus.
Merci de ton aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com