Recherche doublons (PCRE) [Résolu]

Messages postés
9
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
9 décembre 2009
- - Dernière réponse : cs_orax
Messages postés
9
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
9 décembre 2009
- 9 juil. 2009 à 18:16
Dans la chaine suivante :

12,55,4444,55,45,12,45,55,4444,12,55,44,4444,55,45,12,55,44,55,45,12,45,55,12,55,44,55,45

je veux qu'il trouve tous les doublons.


En fait, je veux le contraire de ce que me retourne cette expression :

(\d+),?(?!.*?\1)
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
55
3
Merci
je l'avais obtenu hier, mais je pensais pas que c'était ce que tu voulais.

(?=(\b\d+\b)(?!.*?\1))|(\b\d+\b)


Merci pour ces pistes pour les prefixes suffixes, je vais pouvoir m'amuser davantage ^^

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
55
0
Merci
que fait le

(?! )


?
Commenter la réponse de Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
55
0
Merci
tu souhaite extraire tous les nombres, de manière unique, c'est cela ?
Commenter la réponse de Renfield
Messages postés
9
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
9 décembre 2009
0
Merci
Merci d'avoir répondu aussi vite.
(?!    ) cherche si le suffixe n'est pas présent.
Je vais essayer de clarifier ma demande :

Cette expression : (\d+),?(?!.*?\1) me retourne les nombres (avec la virgule) qui sont en gras et rouge :
12,55,4444,55,45,12,45,55,4444,12,55,44,4444,55,45,12,55,44,55,45,12,45,55,12,55,44,55,45

alors que moi je cherche à avoir le contraire, c'est-à-dire que je veux :
12,55,4444,55,45,12,45,55,4444,12,55,44,4444,55,45,12,55,44,55,45,12,45,55,12,55,44,55,45
Commenter la réponse de cs_orax
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
55
0
Merci
aisé a obtenir, mais là, tu séléctionne 4444 55 et 12 alors qu'ils sont en double....

(voir motifs conditionnels)

pas pigé le coup du suffixe, ça m'a l'ai puissant. j'ai fait des tests mais j'ai pas pigé l'astuce
Commenter la réponse de Renfield
Messages postés
9
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
9 décembre 2009
0
Merci
> "aisé a obtenir, mais là, tu séléctionne 4444 55 et 12 alors qu'ils sont en double...."
Oui je sais, ça peut paraitre bizarre mais c'est ce que je cherche à faire, je ne veux que les doublons.

Je crois que j'ai pu trouver quelque chose de fonctionnel :

(?x)
(?<=           # cherche si le préfixe est présent et l'exclu du résultat
  ,|^
)
(.+?),         # chaine à chercher (tous les caractères)
(?=            # cherche si le suffixe est présent et l'exclu du résultat
  .*?
  (?:\1,|\1$)
)

<hr width="100%" size="2" />Concernant le suffixe (?!   ), voilà un exemple :

aaa(?!bbb)   # vérifie si la chaine bbb N'est PAS présente

aaabbbccc    # ne retourne rien car aaa est suivi de bbb
aaaxxxbbbccc # retourne aaa

<hr width="100%" size="2" />> "(voir motifs conditionnels)"

J'y avais pensé mais je n'ai pas réussi à trouver la solution avec. Je crois que je n'arrive pas bien à m'en servir.
Si par exemple dans la chaine : "aaabbbccc" je veux qu'il me retourne "aaa" suivi de tout le reste si, et seulement si, "aaa" est suivi de "bbb", et bien je fais :
(aaa)(?([b]{3}).+)
mais le problème c'est qu'écrit comme ça, ça ne marche pas dans mon script, il ne reconnait pas cette syntaxe (j'utilise AutoIt ).
D'ailleurs, j'utilise 2 éditeurs : Expresso et RegexBuddy, cette syntaxe fonctionne dans Expresso, par contre dans RegexBuddy, ça ne marche que quand je sélectionne le "Regex Flavor" .NET (je sélectionne toujours PCRE d'habitude).
Commenter la réponse de cs_orax
Messages postés
9
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
9 décembre 2009
0
Merci
Ah oui ! en effet, c'est aussi une solution.

Merci !
Commenter la réponse de cs_orax