Recherche doublons (PCRE) [Résolu]

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

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 9 juil. 2009 à 08:16
+3
Utile
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 ^^
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juil. 2009 à 12:39
0
Utile
que fait le

(?! )


?
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juil. 2009 à 12:40
0
Utile
tu souhaite extraire tous les nombres, de manière unique, c'est cela ?
Commenter la réponse de Renfield
cs_orax 9 Messages postés mercredi 8 octobre 2003Date d'inscription 9 décembre 2009 Dernière intervention - 8 juil. 2009 à 17:53
0
Utile
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
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juil. 2009 à 18:18
0
Utile
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
cs_orax 9 Messages postés mercredi 8 octobre 2003Date d'inscription 9 décembre 2009 Dernière intervention - 9 juil. 2009 à 02:50
0
Utile
> "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
cs_orax 9 Messages postés mercredi 8 octobre 2003Date d'inscription 9 décembre 2009 Dernière intervention - 9 juil. 2009 à 18:16
0
Utile
Ah oui ! en effet, c'est aussi une solution.

Merci !
Commenter la réponse de cs_orax

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.