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 Perl Discussion :

çà parait facile, alors pourquoi ? les délimiteurs de mot


Sujet :

Langage Perl

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut çà parait facile, alors pourquoi ? les délimiteurs de mot
    Bonjour
    Je suis juste un utilisateur de Perl dans une application de filtrage en réception de messages internet.
    Les messages sont considérés sous la forme abcd@fert.suffixe (suffixe comme .com, .fr , etc)
    abcd et fert pouvant être une suite de mots très divers reliés par .,-_ ou concaténés, donc à peu près n'importe quoi.
    Mon objectif est de filtrer (bloquer) n'importe quel message émis avec un suffixe défini comme .icu ; .best ; .xyz ; .bar
    Les messages venant de ces suffixes étant des spams, des amorces ou autres types d'indésirables
    Le paramétrage prend cette forme :
    from .+\@.+\.icu
    from .+\@.+\.best
    from .+\@.+\.xyz
    from .+\@.+\.bar
    D'après ce que j'ai lu .signifie un caractère, + plusieurs caractères concaténés, \ séparateur à la ligne.
    Si j'interprète bien cela signifie
    from = de
    .+ n'importe quel groupe de caractères
    \ séparateur
    .bar le suffixe de l'adresse du message.
    Voici mon problème :
    Je veut bloquer tous les messages provenant du suffixe .co , mais j'ai des messages tout à fait valables (on comprend pourquoi) avec le suffixe .com
    Si j'applique le paramètre from .+\@.+\.co , le logiciel ou l'application bloque aussi les messages au suffixe .com car , et là je ne comprends pas, car "on" m'explique que .co est .compris dans .com !
    N'y a t-il pas une commande pour informer le logiciel que .co n'est pas .com ?
    Serait-ce le . (point) de .co qui dérouterait le langage (ou son utilisateur) ?
    ou dois-je placer un contreslash \ derriere .co pour informer le logiciel que .co est un mot ?
    Merci de m'aider en m'excusant de ne pas connaître Perl qui semble très puissant .
    Merci de votre attention
    GB

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 563
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,

    Une petite expression régulière peut solutionner le soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for $value(qw(toto.titi@pouet.fr toto.titi@pouet.co toto@pouet.com)) {
        print "$value accepted\n" if $value !~ /\.co$/;
    }
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto.titi@pouet.fr accepted
    toto.titi@pouet.com accepted
    !~ /\.co$/ signifie simplement que l'on recherche une chaîne ne finissant pas par .co.


  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut
    Hélas Arioch je ne suis pas maître du logiciel, il s'agit d'un paramétrage :
    Le paramétrage from .+\@.+\.co bloque (dans l'application, un filtre) les messages ayant des adresses de messagerie se terminant par l'extension .co
    Malheureusement le logiciel bloque aussi, comme si j'avais paramétré (écrit) : from .+\@.+\.com
    Or je ne veux pas, mais pas du tout, bloquer l'extension .com (primordiale)
    Je sais que c'est du Perl et çà se voit.
    Pour l'instant j'ai retiré la commande from .+\@.+\.co ce qui permet aux messages à l'extension .com de passer
    Comment dire à from .+\@.+\.co de ne pas considérer les extensions qui ont plus de caractères que co ? comme .com par exemple.
    Par exemple : peut on écrire que co est une chaîne limitée à 2 caractères ? Si c'est possible !
    Merci de votre attention, c'est sympa.
    GB
    .co messages identifiés comme venant de la Colombie

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 563
    Points : 2 003
    Points
    2 003
    Par défaut
    Vos filtres sont dans un fichier externe au script Perl, on est d'accord ?

    Si oui, et comme il s'agit d'une expression régulière stockée en vue d'être exploitée par le Perl, pouvez-vous remplacer le filtre :

    par le filtre :

    Le simple fait de rajouter le symbole $ en fin de filtre devrait faire comprendre au Perl qu'il doit bloquer les adresses finissant par .co mais laisser passer les .com.

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut
    Merci Arioch, je vais essayer, je vous tiens au courant
    GB

  6. #6
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut
    Citation Envoyé par byrautor Voir le message
    Merci Arioch, je vais essayer, je vous tiens au courant
    GB
    Merci Arioch, çà fonctionne.
    Mille fois merci
    Gérard

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 563
    Points : 2 003
    Points
    2 003
    Par défaut

  8. #8
    Membre émérite
    Inscrit en
    Janvier 2006
    Messages
    719
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 719
    Points : 2 712
    Points
    2 712
    Par défaut Explications
    Citation Envoyé par byrautor Voir le message
    D'après ce que j'ai lu .signifie un caractère, + plusieurs caractères concaténés, \ séparateur à la ligne.
    . signifie "n'importe quel caractère" (mais un seul)
    + signifie "ce qui précède, 1 ou plusieurs fois". Donc a+ signifie "1 ou plusieurs a", .+ signifie "n'importe quel caractère, 1 ou plusieurs fois" (et pas forcément le même à chaque fois)... donc plusieurs caractères, en pratique.

    \ signifie que le caractère qui suit doit être compris tel quel : \. signifie "le caractère point", le \ signifiant que le point qui suit est un vrai point et pas le symbole pour dire "1 caractère".
    Dans tes exemples, si je vois .+\.co alors le premier point signifie "1 caractère" (il n'est pas précédé de \) alors que le second est un vrai point (d'où le \ avant)

    Citation Envoyé par byrautor Voir le message
    Si j'applique le paramètre from .+\@.+\.co , le logiciel ou l'application bloque aussi les messages au suffixe .com car , et là je ne comprends pas, car "on" m'explique que .co est .compris dans .com !
    Quand tu fais une recherche avec une expression régulière, par défaut il accepte tout ce qui contient le motif, même si ça contient plus. Tout ce qui contient ".com" contient aussi ".co"
    Comme d'autres te l'ont suggéré, mettre un $ à la fin signifie que le motif doit être impérativement à la fin de la chaîne. Du coup .com ne correspond plus à \.co (ne se termine pas par .co)

    Citation Envoyé par byrautor Voir le message
    Merci de m'aider en m'excusant de ne pas connaître Perl qui semble très puissant .
    Au passage ce n'est pas réellement la syntaxe Perl mais la syntaxe des expressions régulières (enfin rationnelles, mais tout le monde utilise cette mauvaise traduction), qui existent dans de nombreux langages et sont souvent utilisées pour faire ce genre de configuration.

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut
    Merci esperanto
    j'ai bien noté, que de choses intéressantes dans ces langages

  10. #10
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    merci de ne pas oublier de cliquer sur le bouton "Résolu" si la réponse convient ;-)

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 91
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2009
    Messages : 373
    Points : 779
    Points
    779
    Par défaut
    Citation Envoyé par x-lours Voir le message
    merci de ne pas oublier de cliquer sur le bouton "Résolu" si la réponse convient ;-)
    C'est fait. Merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/05/2006, 23h53
  2. [OpenTBS] Pourquoi les templates ?
    Par cedre22 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 10h36
  3. Pourquoi les relations entre les tables
    Par ghita269 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/12/2005, 12h54

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