Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2006, 18h30   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2005
Messages : 38
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 38
Points : 11
Points : 11
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).
alex.hitman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 19h22   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Tu peux récupérer tes nombres avec une regex, puis les traiter en php (suppression des nombres interdits).
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 19h28   #3
Candidat au titre de Membre du Club
 
Inscription : septembre 2005
Messages : 38
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 38
Points : 11
Points : 11
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.
alex.hitman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 19h51   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 19h56   #5
Candidat au titre de Membre du Club
 
Inscription : septembre 2005
Messages : 38
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 38
Points : 11
Points : 11
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 !
alex.hitman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 20h07   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 20h23   #7
Candidat au titre de Membre du Club
 
Inscription : septembre 2005
Messages : 38
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 38
Points : 11
Points : 11
Très bien, c'est donc ce que je vais faire ^^

a+ et merci
alex.hitman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h28.


 
 
 
 
Partenaires

Hébergement Web