Regex

Par hatfab, il y a 9 ans


Bonsoir,
Suite à un précédent post, j'ai bien avancé sur mes expressions régulières. C'est magique, merci !
Il reste une chose que je n'arrive pas à résoudre :
J'ai cette url <code>http://www.stereoptik.com/calendrier/[category(ie) ou list(e)]/[n'importe quoi sauf "dark-circus"]/</code>
J'essaie de la cibler avec cette expression :
<code>http:\/\/www[\w.]+\/calendrier\/(categor[a-z]{1,2}|list[a-z]{0,1})\/^(dark-circus)</code>
mais ça ne fonctionne pas. Vous pouvez m'aider à trouver pourquoi ?

En fait, pour être plus clair je voudrais que ça match si mon url est : <code>http://www.stereoptik.com/calendrier/liste/n'importe-quelle-suite</code> et pas si c'est : <code>http://www.stereoptik.com/calendrier/liste/dark-circus</code>

Merci beaucoup

6 réponses

SLK, il y a 9 ans

Salut,

pour interdire un mot, tu peux le mettre entre parenthèses, et mettre "?!" avant le mot (il me semble...).

Je n'ai pas compris pourquoi tu utilises [\w.], je l'ai enlevé mais dis moi tu en as vraiment besoin.
Rappelons que [\w.] est un racourcis pour [a-zA-Z0-9_]

Essaie ça pour voir :

http:\/\/www\.stereoptik\.com\/calendrier\/liste\/(?!dark-circus)

J'ai du mal aussi à comprendre ça (categor[a-z]{1,2}|list[a-z]{0,1}
Moi de ce que j'ai supposé, c'est qu'il PEUT y avoir écrit :
category OU categories OU list OU liste
Si c'est bien ça, essaie ça pour voir :

http:\/\/www\.stereoptik\.com\/calendrier\/(categor(y|ie)|liste?)\/(?!dark-circus)
hatfab, il y a 9 ans

Salut,
Je n'ai pas compris pourquoi tu utilises [\w.]
En effet tu as raison, je peux utiliser directement l'url puique cette partie ne change pas.
J'ai du mal aussi à comprendre ça (categor[a-z]{1,2}|list[a-z]{0,1}
C'est exactement ça, il PEUT y avoir écrit : category OU categories OU list OU liste, merci pour cette optimisation.

Ton expression fonctionne, dans le sens ou elle ne match pas avec <code>http://www.stereoptik.com/calendrier/category/dark-circus/</code> en revanche, je voudrais qu'elle match la totalité de l'url si celle-ci est <code>http://www.stereoptik.com/calendrier/category/n'importe-quoi-d'autre-blablabla/</code> pour l'instant elle ne match que <code>http://www.stereoptik.com/calendrier/category/</code>

Merci beaucoup de ton aide

JeremieMeunier, il y a 9 ans

Je pense que ça peut marcher du coup si tu rajoute un paramètre pour dire “tout”

http:\/\/www\.stereoptik\.com\/calendrier\/(categor(y|ie)|liste?)\/(?!dark-circus)([a-zA-Z0-9\-_])
hatfab, il y a 9 ans

Et non, du coup ça marche aussi avec "dark-circus"

SLK, il y a 9 ans

peut-être avec ça :

http:\/\/www\.stereoptik\.com\/calendrier\/(categor(y|ie)|liste?)\/((?!dark-circus).*)

Je me rend compte aussi que plus haut j'ai écris "categories", mais j'imagine que c'était "categorie" (sans "s") que tu voulais

hatfab, il y a 9 ans

Super, ça marche comme ça !
Merci beaucoup