|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2005 Messages : 38 ![]() |
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). |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Tu peux récupérer tes nombres avec une regex, puis les traiter en php (suppression des nombres interdits).
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2005 Messages : 38 ![]() |
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.
|
|
|
00
|
|
|
#4 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
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...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2005 Messages : 38 ![]() |
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 ! |
|
|
00
|
|
|
#6 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2005 Messages : 38 ![]() |
Très bien, c'est donc ce que je vais faire ^^
a+ et merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com