problème de regex

Dr, j'ai une regexite aiguë !

a marqué ce sujet comme résolu.

Bonjour à tous ! Cela fait un bout de temps que je n'ai pas codé en PHP, mais comme ça commençais à me démanger grave, et que j'ai besoin de monter un site pour un prochain projet, ben je m'y suis remis :)

Mon problème se situe sur la construction d'une REGEX…bon, autant vous le dire tt de suite, les REGEX et moi, c'est pas une histoire d'amour :P ! Je suis hermétique à la syntaxe des regex, j'ai beau lire des cours, tenté de m'exercer, rien à faire…et ma récente tentative de mise à niveau de ces dernier jours ne résout pas le problème, ça rentre pas, ça rentre pas :(

Bon, du coup, me voila complètement coinçé, et j'ai vraiment besoin de votre aide pour écrire cette #$!*\^#(<= ceci n'est pas une regex :D ) de REGEX !

Voici ce que j'essaie de filtrer :

  • un sous-ensemble de lettres minuscules et/ou chiffre (bla, 222, b2abrz…)

[\w]+ si j'ai bien compris

  • ce sous ensemble peut exister plusieurs fois, en étant obligatoirement relié par "-" (bla-br2t-rbz4....)

là, je pêche un peu :P , ^[\w]-?[\w]$ ne semble pas correct…pourquoi ?

  • ce sous-ensemble ne peut pas commencer ni ce finir par "-" (donc lettre ou chiffre uniquement)

^[\w] et [\w]$ si je ne me goure pas

  • ce sous ensemble est ensuite englobé dans un ensemble qui doit obligatoirement commencé par "/" (/bla, /b45-re, /bre-212-r2t…)

^\/ sauf erreur de ma part

cet ensemble peut être multiplié x fois (/bret/r2ty-aze/222/tra)

{1,}

Dans un premier temps, j'aurais bien besoin que vous me confirmiez tout mes Image utilisateur :) !

Merci par avance pour l'aide que vous pourrais m'apporter sur ce douloureux (si si,j'ai des regex douloureuses :D ) problème !

+0 -0

Bonjour,

Je t'invite à regarder du coté de ce site.

\w c'est n'importe quel caractère alphanumérique (majuscule ou non) donc c'est pas ça. [a-z0-9] fonctionnera

pour en avoir plusieurs reliés par des tirets :

1
[a-z0-9]+(\-[a-z0-9]+)*

+ pour dire 1 ou plus, * pour dire 0 ou plus. (équivalents de {1,} et {0,}

le reste est bon.

Autre ressource : pour voir le résultat

+0 -0

en effet, j'ai confondu facultatif multipliable et obligatoire multipliable :)

J'ai pu rajouter sans encombre les début et fin de chaine obligatoire, reste à implémenté le "/" de début, et rendre le tout multipliable…merci pour ce début :) !

Ho, les beau lien que je garde précieusement !

PS : t'à pas un lien d'un site qui fait l'inverse (genre tu lui décris ce que tu veut et PAF ! il te pond la regex :D ! )

+0 -0

PS : t'à pas un lien d'un site qui fait l'inverse (genre tu lui décris ce que tu veut et PAF ! il te pond la regex :D ! )

babas

J'ai pas ça en stock, mais ça doit exister. Y a des programmes qui resolves automatiquement les problèmes de regex golf. un petit truc interactif doit bien exister… Si ce n'est pas le cas, développe le, et viens nous le présenter!

+0 -0

re-coucou !

bon, voici ma version de la regex :

1
#^(/([a-z0-9]+(\-[a-z0-9]+)*))*$#

J'ai fait quelques tests, ça semble correct au premier abord, mais j'aimerais néanmoins avoir votre avis pour savoir si :

  • Elle est correctement écrite
  • Elle ne peut pas être optimisée

Xia, j'ai tenté de passé ma regex à la moulinette de tes liens, j'avoue, j'ai pas compris la réponse que ces sites m'ont donné :D !

+0 -0

Il manque un backslash pour échapper le premier slash. Ici, tu vois tous les chemins qui valident la regex. Tu remarquera que la dernière étoile permet de valider avec une chaine vide. si tu mets un plus à la place, tu oblique à avoir au moins un groupe de caractères.

, tu peux voir ta regex en action. tu peux modifier la chaine de caractères pour voir ce qui est valide ou non. La partie de droite te montre le résultat de la fonction match.

Edit : j'ai réussi à faire mon lien avec parenthèses

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte