Regex avec quantifieur sans séquence
Fermé
cristoc
Messages postés
32
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
8 février 2023
-
11 sept. 2018 à 09:12
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 11 sept. 2018 à 13:24
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 11 sept. 2018 à 13:24
2 réponses
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
11 sept. 2018 à 10:51
11 sept. 2018 à 10:51
Bonjour,
Tes explications ne sont pas très claires...
Je suppose à la lecture de ton énnoncé et de l'exemple donné... que tu cherches les mots qui auraient 3 tirets dedans.. c'est bien ça ??
Dans ce cas, la regex pourrait être du genre
Tes explications ne sont pas très claires...
par exemple je veux reconnaitre 'mot-special-10-bis'
Je suppose à la lecture de ton énnoncé et de l'exemple donné... que tu cherches les mots qui auraient 3 tirets dedans.. c'est bien ça ??
Dans ce cas, la regex pourrait être du genre
(\w+-\w+-\w+-\w+)
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 11 sept. 2018 à 10:58
Modifié le 11 sept. 2018 à 10:58
Bonjour,
J'essaierais quelque chose de ce genre :
C'est-à-dire « n'importe quoi (sauf tiret) suivi d'un tiret, trois fois. Puis n'importe quoi (sauf tiret) pour finir. »
Cela matche pour EXACTEMENT trois tirets.
Si tu souhaites AU MOINS trois tirets, tu peux utiliser ça :
Xavier
J'essaierais quelque chose de ce genre :
/^([^-]*-){3}[^-]*$/
C'est-à-dire « n'importe quoi (sauf tiret) suivi d'un tiret, trois fois. Puis n'importe quoi (sauf tiret) pour finir. »
Cela matche pour EXACTEMENT trois tirets.
Si tu souhaites AU MOINS trois tirets, tu peux utiliser ça :
/(.*-){3}/
Xavier
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
11 sept. 2018 à 11:11
11 sept. 2018 à 11:11
Bonjour
Tes regex ne sont pas bonnes.
Par exemple :
Dans la chaine :
Avec ta première regex : Toute la ligne est selectionnée
Avec la seconde :
Tes regex ne sont pas bonnes.
Par exemple :
Dans la chaine :
xcdvgfdg mot-special-10-bis 76 dqsdfqsf
Avec ta première regex : Toute la ligne est selectionnée
Avec la seconde :
xcdvgfdg mot-special-10-
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
11 sept. 2018 à 11:11
11 sept. 2018 à 11:11
Tu peux tester tes regex ici par exemple :
https://regex101.com/
https://regex101.com/
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
11 sept. 2018 à 11:57
11 sept. 2018 à 11:57
Oui c'est justement le site que j'ai utilisé pour les tester.
Pour moi elles répondent au cahier des charges, qui ne parle pas de mots mais de chaînes.
Après s'il doit y avoir des critères supplémentaires, on peut les adapter. J'ai choisi cette forme plutôt qu'une forme plus directe du genre .*-.*-.*-.*, sur laquelle j'étais parti au début, pour couvrir le cas où on souhaite 50 tirets... Ce qui n'est, je te l'accorde, pas au cahier des charges ;)
Pour moi elles répondent au cahier des charges, qui ne parle pas de mots mais de chaînes.
Après s'il doit y avoir des critères supplémentaires, on peut les adapter. J'ai choisi cette forme plutôt qu'une forme plus directe du genre .*-.*-.*-.*, sur laquelle j'étais parti au début, pour couvrir le cas où on souhaite 50 tirets... Ce qui n'est, je te l'accorde, pas au cahier des charges ;)
cristoc
Messages postés
32
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
8 février 2023
1
11 sept. 2018 à 12:42
11 sept. 2018 à 12:42
Merci beaucoup à vous 2 , en effet ce sont bien des chaines sur lesquelles je teste la regex.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
11 sept. 2018 à 13:24
11 sept. 2018 à 13:24
Au temps pour moi Jordane, je viens de comprendre ce que tu voulais dire : ma 2ème regex s'arrête juste après le tiret, en effet c'est un soucis.
/(.*-.*){3}/est mieux.