Expression regulieres

fleche -  
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
bonjour,

je cherche la synthaxe pour réaliser une expression réguliere pour determiner n'importe quel chiffre sauf 21, 23, 25, 80 et 115 !!

J'avaous que je misère bien comme il faut...

si quelqu'un a unbe idee

Merci
++
A voir également:

4 réponses

sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
La question c'est: Est-ce qu'il n'y a pas de solution plus simple et efficace que les regexp ?

Moi en Python, je ferais:

if valeur not in (21, 23, 25, 80,115):
   ...


Et voilà !

C'est très simple, et c'est beaucoup plus rapide qu'une regexp.
0
fleche
 
je crois que j'ai oublié une grosse précision, c'est que c'est du PERL que je fais !!

lol
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
ouf... ça fait un moment que je n'ai plus fait de perl.

Mais en perl, il y a également les tableaux et les tableaux associatifs.

ça peut être un moyen très rapide pour savoir si une valeur fait partie d'une liste ou non.

Les regexp ont un coût (construction d'une machine à états en fonction de ton expression régulière, etc.)
Souvent avec quelques manipulations de chaîne et tableau, c'est plus efficace.
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

une regex peut être /2[135]|80|115/

En fait ce n'est pas vraiment une regex (à part la classe de caractères c'est une simple énumération des chiffres, donc je ne trouve pas interessant de faire une regex pour ça.

Si tu fais une liste tu peux vérifier pour chaque élément de la liste mais dans ce cas le coût sera plus grand.

Maintenant il faut aussi veiller à l'utilisation de la regex ainsi que la façon de la rediger.

Donne plutôt les données que tu as en entrée (un fichier ou la chaîne) et je vais essayer de trouver une solution optimale.

En général le coût des regex en Perl est dû à l'utilisation des variables $', $` et $& mais normalement dans les dernières versions de Perl il y a des optimisations.

Bien sûr qu'une solution avec des hash peut être envisageable mais il faut savoir ce qu'on traite. (Qui ne pense pas en hash ne pense pas en Perl).

lami20j
0