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 :

inverse d'une expression régulière


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut inverse d'une expression régulière
    Bonjour, j'ai l'expression régulière, mais je n'arrive pas à faire son opposé :
    /^\/download\/.*\d\/info$/
    En fait, j'ai quelque chose de la forme : /download/123456789/info sachant que 123456789 varie, et je souhaite vérifier que ce n'est pas ca dans le but d'une redirection par mon reverse proxy.

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^\/download\/.*\d\/info$/
    déjà pour améliorer l'expréssion je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^\/download\/\d+\/info$/
    et si le nombre de chiffre est constant x
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^\/download\/\d{x}\/info$/
    si le nb de chiffre est compris entre x et y
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^\/download\/\d{x,y}\/info$/
    et pour tester une expression régulière on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable =~ /^\/download\/\d{x,y}\/info$/
    pour tester l'inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable !~ /^\/download\/\d{x,y}\/info$/

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut
    Merci de ta contribution, mais je cherche plutôt comment inverser l'expression et non pas inverser le test car c'est une règle de redirection sous Vulture et on a uniquement accès qu'à l'expression régulière en Perl.

  4. #4
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    humm je ne suis pas sur de comprendre mais,
    tu doit juste utiliser une expression régulière qui détecte que la ligne n'est PAS, du style /^\/download\/\d+\/info$/. je ne vois pas trop comment faire, il faudrait savoir : les autres lignes peuvent-elles commencer par download ? et finir par info ? avec la même structure (avec des /) et comporte aussi un nombre ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut
    Mon URL doit forcément remplir 2 conditions pour être validée :
    Elle doit commencer par /download et finir par /info
    Les règles à définir cherchent à refuser celle qui n'ont pas ces conditions.

    J'ai trouvé quelque chose qui a l'air de marcher :
    je défini 2 règles :
    la premiere : /^(?!download)/
    et la deuxieme : /(?<!info)$/ et ça a l'air de fonctionner.

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (m{/^/download.+?/info$/}i ) {
      # match bien
    }
    else {
      # match pas
    }

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

Discussions similaires

  1. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 18h17
  2. Une expression réguliére
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/09/2005, 20h14
  3. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22

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