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 :

[HELP] Expression régulière (avancée)


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut [HELP] Expression régulière (avancée)
    Voilà je cherche à créer une expression régulière me permettant de trouve dans un document une IP contenu dans une classe d'adresse IP que je rentre en parametre de ma fonction...

    Je sais faire une expression régulière sur une classe d'adresse IP (ex au hasard : 10.30.0.0 à 10.55.255.255) que je connais, mon problème est que je n'arrive pas à créer dynamiquement mon expression régulière en fonction de la classe d'adresse IP que je récupère en paramètre.

    mon expression régulière pour la classe donnée en exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10\.(?:[34]\d|5[0-5])\.(?:[01]?\d?\d|2[0-4]\d|25[0-5])\.(?:[01]?\d?\d|2[0-4]\d|25[0-5])
    Auriez-vous des conseils pour m'aider à rendre dynamique le traitement de la classe d'IP en entrée ?

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour.

    Si tu veux rendre dynamique ta regex, il te suffit d'utliser des variables dedans. Tu initialises tes variables avec les valeurs prises dans le document et tu fais ta regex à partir de ces variables, donc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10\.(?:[$var1$var2]\d|$var3[$var4-$var5])
    Evidemment, je te conseilles de trouver ds noms plus explicites pour tes variables

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Oui j'y ai pensé en effet, le soucis étant que je n'arrive pas à savoir que mettre dans mes variables.

    Genre pour 0 à 255 en expression régulière ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:[01]?\d?\d|2[0-4]\d|25[0-5])
    Imaginons que j'ai 10 à 199 ça donne :
    J'imagine à peine ce que ça peut donner si j'ai une classe genre :
    10.168.75.5-215.130.25.80

    Si j'analyse correctement, il faudrait que j'arrive à découper chaque partie de la classe IP rentrée en paramètre et placer les morceaux dans des variables que je dois ensuite faire intéragir entre elles pour créer ma regex...

    Bon bah je m'y met ! Souhaitez moi bonne chance...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Je dois avouer que c'est bien utile . . . mais . . . (parce qu'il y a toujours un mais)

    Ce module ne traite que les classes d'adresse ip de type :
    #1.#2.#3.0 - #1.#2.#3.255
    ou
    #1.#2.0.0 - #1.#2.255.255

    Moi faut que j'arrive à traiter des classes Ip genre :
    10.1.20.125 - 15.5.150.10

    Mais merci de m'avoir montrer ce module... ça pourra surement m'aider...

  6. #6
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Pourquoi ne pas effectuer le traitement en 2 passes ?

    La première passe qui te renvoie des IP "génériques" :

    #1.#2.#3.0 - #1.#2.#3.255
    ou
    #1.#2.0.0 - #1.#2.255.255
    Et une fois que tu as ces IP, tu appliques ton filtre manuel sur chacune de ces adresses ! (par exemple avec un split pour récupérer les 4 composantes de l'IP, qui te permettra de tester si elles appartiennent à la plage de valeurs que tu recherches)

Discussions similaires

  1. [RegEx] Expression régulière help
    Par tazamorte dans le forum Langage
    Réponses: 4
    Dernier message: 30/05/2006, 19h13
  2. need help pour : boucle & expression régulière
    Par Fabouney dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 02h22
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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