IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Regex : comment limiter le nombre de matches dans une recherche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut Regex : comment limiter le nombre de matches dans une recherche
    Bonjour,
    Je ne connais pas grand chose en Regex.
    J'ai cette pattern ((\d{2} ){4})\d{2} qui me permet de récupérer des n° de téléphone formattés dans une chaine et qui fonctionne bien. Potentiellement, elle me retourne 0 à 3 matches; je voudrais ne prendre que les 2 premiers matches. Est-ce possible directement dans la Regex ou dois-je le faire comme actuellement en traitant mon tableau de matches ?
    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 248
    Par défaut
    Hello,
    peux-tu nous mettre ton code complet avec un exemple de données d'entrée et ce que tu veux en sortie (bien sûr pas avec de vrais numéros de téléphone).
    Ami calmant, J.P

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Quand tu travailles avec les Regex, tu as la méthode Execute qui te renvoie une collection avec toutes les occurrences qui vérifient ton Pattern.
    Il te suffit donc de prendre les 2 premiers éléments de la collection.

    Si tu veux un peu de documentation, il existe ce tutoriel de Charles A. qui explique les bases des Regex en VBA, ça devrait t'aider

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut
    Merci à tous les deux d'avoir regardé mon problème
    @jurassic-pork
    cas le plus complet, certaines fois je n'ai pas de n° , pas de texte, un seul n° etc.
    chaine ="01 22 33 44 55 (standard)|06 45 45 45 45 (mobile)|01 22 33 44 66 (maintenance)"
    avec la regex "((\d{2} ){4})\d{2}" me ramène bien les 3 n°, ce que je voudrais, c'est limiter le nombre de résultats à 2 maximum (les 2 premiers)
    @mat955
    C'est ce que je fais, dans le tableau vba qui collecte les matches, je ne prends que les 2 premiers et ça marche, je voudrais juste savoir si c'était réalisable directement dans la regex

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 248
    Par défaut
    Comme tu peux avoir de 0 à 3 correspondances ça va être difficile de faire une expression régulière qui s'adapte à tous les cas. Qu'est-ce qui ne te plaît pas de le faire dans le traitement des résultats ? et tu ne nous as toujours pas montré ton code complet

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Je rejoins jurassic pork, les Regex ne sont faites que pour vérifier qu'une chaîne de caractère vérifie un pattern.
    Le plus simple est ensuite d'utiliser la collection pour ne garder que les 2 premiers résultats.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment limiter le nombre de threads dans mysql ?
    Par Bronks59 dans le forum Administration
    Réponses: 2
    Dernier message: 28/04/2017, 13h47
  2. [AC-2007] Comment limiter le nombre d'enregistrements dans une table
    Par arabi91 dans le forum Modélisation
    Réponses: 6
    Dernier message: 24/03/2012, 11h25
  3. [LUCENE] limitation du nombre de caratères dans une recherche
    Par ChristopheH dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 17/03/2010, 12h21
  4. limite du nombre de caractères dans une requete
    Par pheno82 dans le forum Access
    Réponses: 3
    Dernier message: 01/06/2006, 22h12
  5. [C#] Limité le nombre de lignes dans une DataView ...
    Par maitrebn dans le forum Accès aux données
    Réponses: 5
    Dernier message: 07/11/2005, 23h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo