Réécriture url (regexp)

Réécriture url (regexp) - HTML/CSS - Programmation

Marsh Posté le 03-07-2013 à 09:58:30    

Bonjour,
 
Je cherche à écrire une règle de réécriture qui accepterait des blocs de 1 à 3 majuscules séparées par des tirets (-), et je n'y arrive pas.
La chaîne pourrait donc avoir ces formes, par exemple :
 
ABC
ABC-DEF
AB-CDE-F
 
Mon soucis vient du fait que la répétition des sous-chaînes se fait à l'infini et je n'arrive pas à combiner la limitation à 3 caractères ([A-Z]{1,3}) et la répétition des blocs (+).


Message édité par Profil supprimé le 03-07-2013 à 09:58:50
Reply

Marsh Posté le 03-07-2013 à 09:58:30   

Reply

Marsh Posté le 03-07-2013 à 10:08:22    

la clef en regexp est le clustering (parenthèse), sachant que l'on peut faire un groupe sans "créer" de sous-chaine
 

Code :
  1. (?:(?:[A-Z]{1,3})(?:-[A-Z]{1,3})*)


 
Cordialement

Reply

Marsh Posté le 03-07-2013 à 10:15:16    

Merci beaucoup pour l'information et le code !
 
Je comprends maintenant mieux comment ça fonctionne et ce qu'il est possible de faire.

Reply

Marsh Posté le 03-07-2013 à 10:55:07    

Bon finalement ce n'est pas si simple que cela :/
 
Le problème est le suivant :
Si je traite la chaîne ABC-DEF avec cette règle, dans le cas d'une réécriture d'url, je récupère "ABC-DEF" en $1, "ABC" en $2 et "-DEF" en $3.
 
Alors ce n'est pas un problème en soit quand on se limite à cette règle, je peux ne traiter que la variable $1.
En revanche si je la complète avec d'autres paramètres à la suite je ne sais pas sur quelle variable vont m'être retournées les valeurs suivantes puisque ça dépendra de la structure de la première partie de la chaîne.
 
Suis-je explicite?

Reply

Marsh Posté le 03-07-2013 à 11:08:20    

J'ai ajouté des parenthèses autour de l'intégralité de la règle et je récupère uniquement la variable $1 que je traite par la suite.
C'est moins propre mais dans la mesure où de toute façon il faut déjà que je traite les sous-chaînes....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed