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

Langage PHP Discussion :

Rechercher n'importe quel nombre, avec exceptions [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Rechercher n'importe quel nombre, avec exceptions
    Bonsoir.

    J'ai besoin dans une expression régulière, à un endroit, de vérifier la présence de n'importe quel nombre (dans une chaine de caractères), avec des exceptions (pouvoir rechercher n'importe quel nombre, sauf 11, 13 ou 17 par exemple).

    Par exemple, d'accepter la présence de 1 25 364 etc... mais pas de 22 ou 11

    Seulement, je ne sais pas comment faire ça dans la regexp.

    J'ai vraiment besoin de votre aide.

    Merci d'avance.


    edit : j'ai oublié de préciser que les nombres sont des entiers positifs (0 compris).

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu peux récupérer tes nombres avec une regex, puis les traiter en php (suppression des nombres interdits).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Oui, j'avais pensé à faire ça, mais le temps d'exécution serait beaucoup plus long. C'est pour cela que je préfèrerai amplement que tout le tri soit fait par l'expression régulière.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    J'adhère à l'opinion de vg33, surtout que ce serait, je pense, plus facile à relire et à modifier par la suite. Il ne s'agit que d'un test d'équivalence numérique, rien de très gourmand en ressources. Je me suis d'ailleurs persuadé que cela serait bien plus rapide que de le faire dans la regex, contrairement à ce que tu crois...
    Compliquer une regex est équivalent à augmenter son temps d'exécution.

    Je dis ça car je connais un peu les regex mais je ne sais pas comment faire cela...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    J'ai regardé du côté des assertions, mais je ne m'en sort pas...

    Justement, le faire dans la Regexp pourrait permettre d'éliminer d'office pas mal de résultats, donc autant de boucles en moins à faire.

    Mais bon, je ne m'en sort pas avec celle-là, je vais donc trier les résultats après la regexp.

    Merci quand même, mais si vous trouvez, faites moi signe !

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Non, je t'assure que compliquer la regexp est plus gourmand que faire le test à côté. Bon ok, tout dépend de comment tu le fais, ce test à côté... Bref.

    Mettre davantage de conditions, surtout des assertions arrières, oblige le moteur de regex à faire des allers et retours pour vérifier en permanence si l'expression correspond ou non à ce que tu lui demandes.

    Avec une seule assertion arrière, il refait une vérification de toute l'expression pour chaque nouveau caractère rencontré ; je te laisse imaginer ce que ça donne avec deux ou plus !

    Je te recommande l'article de PHP France à ce sujet (les regex), il est très clair.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Très bien, c'est donc ce que je vais faire ^^

    a+ et merci

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

Discussions similaires

  1. [XL-2010] Recherche et importation de données avec la methode autofilter
    Par chafoo dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 04/12/2014, 15h30
  2. [Wamp] Utiliser Wamp avec n'importe quel port
    Par quentiin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 27/01/2010, 12h46
  3. recherche dans n'importe quel champs
    Par slack457 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/12/2009, 00h28
  4. Réponses: 1
    Dernier message: 27/02/2008, 20h26
  5. Conversion avec n'importe quel langage
    Par mastere.info dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 07/04/2007, 19h23

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