Recherche doublons (PCRE)

Résolu
cs_orax Messages postés 9 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 9 décembre 2009 - 7 juil. 2009 à 17:51
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)

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 juil. 2009 à 08:16
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 ^^
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juil. 2009 à 12:39
que fait le

(?! )


?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juil. 2009 à 12:40
tu souhaite extraire tous les nombres, de manière unique, c'est cela ?
0
cs_orax Messages postés 9 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 9 décembre 2009
8 juil. 2009 à 17:53
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juil. 2009 à 18:18
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
0
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 à 02:50
> "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).
0
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
Ah oui ! en effet, c'est aussi une solution.

Merci !
0
Rejoignez-nous