Tri de mots (Regex + count())

dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 - 4 févr. 2017 à 23:29
dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 - 16 févr. 2017 à 14:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101832-tri-de-mots-regex-count

dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
16 févr. 2017 à 14:33
hello Jordane & Wismeril
merci, je testerai.
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
Modifié par Whismeril le 15/02/2017 à 07:00
Salut, ce qu'il veut, c'est l'inverse: pas de répétition.
Par contre, on peut simplifier la mienne avec le {0,}.
Et \w matche aussi sur un nombre.

En fait pour faire simple, on peut faire deux passes.
La première matche les mots de 7 lettres
^[a-z]{7}$

Et la seconde vérifie qu'il n'y a pas de lettre en double.
(\w)(?!\w{0,}\1)

Je n'ai pas testé, mais en fournissant à la seconde les résultats de la première ça devrait marcher.
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
15 févr. 2017 à 02:36
Hello,
Je me demande si une regex comme celle-ci

([\w])(?:(\w{0,}\1))

pour le coup.. ne serait pas plus "facile"
elle match tous les mots ayant une ou plusieurs lettre(s) répétées (une ou x fois..)
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
14 févr. 2017 à 07:02
oui enfin, si c'est pas très modulable si tu veux changer le nombre de lettres.
dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
14 févr. 2017 à 05:05
Super merci Whismeril.
Je me disai que c'était possible.
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
10 févr. 2017 à 13:33
Mot de 7 lettres (en minuscules et sans accents, cédilles, etc...) avec toutes les lettres différentes.
^([a-z])(?![a-z]{0,5}\1)([a-z])(?![a-z]{0,4}\2)([a-z])(?![a-z]{0,3}\3)([a-z])(?![a-z]{0,2}\4)([a-z])(?![a-z]?\5)([a-z])(?!\6)([a-z])$


Je t'explique le premier
([a-z]) une lettre que je capture.
(?![a-z]{0,5}\1) suivi d'un truc qui ne peut pas être de 0 à 5 fois une lettre et la lettre que je viens de capturer (qui se trouve dans la capture 1) : \1, et ainsi de suite.
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
Modifié par Whismeril le 10/02/2017 à 13:16
Ha voilà quelque chose de clair, tu cherches des mots avec toutes les lettres diférentes. Tu devrais écrie ça dans ta description!
Pour en revenir à la regex, faut que je réfléchisse.
dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
Modifié par dume. le 10/02/2017 à 10:32
ok c'est une limite de la REGEX on ne peu pas Ex: avoir un mot de 7 lettres mais avec une seule occurence de chaque lettres Ex: un seul a ou A un seul F ou f.
J'espere etre plus précis.
je vais posté dans REGEX oui tu as raison.
Merci.
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
8 févr. 2017 à 10:35
Comme je te l'ai dit je n'ai pas compris ce que tu souhaites faire avec une Regex.
D'ailleurs la description de l'utilité de ton code est obscure (à part que ça ne sert à rien...), et ça n'aide à comprendre ce que tu veux.
Donc tu postes une question claire dans le forum Regex et on tachera d'y répondre.
dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
Modifié par dume. le 8/02/2017 à 07:38
je t'attendais mdr!
moi je pense que l'occurence 0 ou 1 c'est avec '?' mais pas moyen de trouvé une solution meme avec {0,1}.
peu tu m'expliqué mieux?(modifie & vire les/la fonctions ( c'est ce que je veut juste la REGEX).
Je ne trouve pas logique qu'on ne puisse pas faire cela simplement avec une Expression Réguliere...
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
Modifié par Whismeril le 8/02/2017 à 06:37
Bonjour,

Je ne code pas en python et en parcourant ton code pour essayer de comprendre quel fonction tu voudrais remplacer par une regex, je sèche.
Il y a une catégorie regex dans le forum, poste une question, avec ce que tu as en entrée et ce que tu voudrais obtenir.

Par contre
# Expression reguliere pour obtenir tous les mots de 10 caractères
# reg= r"^[A-Za-z]{10,10}$"

Ceci est faux, cette regex retourne un texte complet contenant 10 lettres et pas 10 caractères.
Pour 10 caractères se serait
^.{10}$
Quand tu cherches un nombre fixe d'occruences, il suffit de l'écrire une fois.
Et quand à mot en regex il veut dire des lettres assemblées et limitées au début et à la fin par:
  • espace
  • ponctuation
  • debut de texte
  • fin de ligne
  • fin de texte

Pour chercher un mot, ou plus exactement les limites d'un mot, on utilise \b
dume. Messages postés 8 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 15 mars 2018 1
Modifié par dume. le 8/02/2017 à 03:57
Si quelqu'un peu me donner la regex pour me passer de la fonction, ce serai sympa.(j'ai galéré puis laissé tomber!)

Merci
Rejoignez-nous