Yann
-
3 févr. 2022 à 11:39
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023
-
3 févr. 2022 à 17:23
Bonjour à tous,
Je suis en train de me prendre la tête dessus, donc, je demande au cas ou :)
Dans le cadre d'un tableau sur Data Studio, j'essaye d'afficher un groupe de caractère terminant les URL d'un site web :
en gros, les URL sont construites toutes comme ça dossier/mon-url-AZ19/ le AZ19 correspondant au code alphanumérique que je veux isoler (qui d'ailleurs ne répond à aucune règle pratique, il peut faire de 3 à 6 caractères, n'avoir que des chiffres, etc..)
J'y parviens sans difficulté avec
([^-]+)/$
ce qui me permet bien de sortir mon AZ19
Sauf que, mauvaise surprise (et worpdress oblige) je découvre des pages avec comme URL dossier/mon-url-AZ19-2/ Ma regex renvoyant désormais le 2 au lieu du AZ19
Et là, je coince.. Comment, dans mon expression régulière, puis-je récupérer mon AZ19 en ignorant un éventuel -2 (ou -3, soyons fous) qui pourrait le suivre ?
Voilà, si y'a des habitués des expressions régulières, je suis preneur :)
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023622 3 févr. 2022 à 17:23
Bonjour
Il existe des sites en ligne qui permettent de tester ses regex. Selon le moteur de regex que tu utilises il faut choisir le bon site
Je supposais que WordPress utilise le moteur de PHP >= 7.3, j’ai donc choisi regex101 et je l’ai configuré avec ce moteur.
Mais avec ta regex il m’a demandé d’échapper le / final. Du coup WordPress se sert peut-être d’un autre moteur. Il faudra vérifier.
Bref. Ta regex a un autre défaut.
Comme regex101 permet de sauver des tests et conserver l’URL.
Je t’ai mis un exemple illustrant l’autre problème
https://regex101.com/r/gIVluG/1
Comme tu peux le voir AZ&19 est accepté.
Tu as dit ne vouloir que des chiffres et des lettres (majuscules, minuscules, avec ou sans accent)
Une option est d’utiliser
\w
mais cette instruction accepte aussi les signes de ponctuation selon les moteurs.
Pour avoir uniquement des chiffres il y a
\d
.
Pour avoir uniquement des lettres majuscules sans accents, il y a
Par contre, on est obligé de garder cette dernière condition dans la capture sinon, la regex trouve AZ19 et 2.
On peut faire en sorte que le - chiffre, ne constitue pas un groupe