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

Comment faire une expression régulière ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut Comment faire une expression régulière ?
    bonjour à tous,

    je suis nouveau sur le forum et je suis tombé dessus en cherchant des infos sur les expressions régulières.

    Je ne suis pas programmeur, mais j'ai des besoins et j'ai l'impression qu'on peut faire un peu tout avec cette technique d'écriture.

    Avant de fouiller plus dans la création d'expressions régulières compliquées, J'aimerais savoir s'il est possible avec de filtrer une adresse IP ?
    J'ai un réseau en 172.16.0.0 et je veux que seules certaine @ip soient filtrées. Par exemple, toutes celles qui sont comprisent entre 172.16.2.30 et 172.16.3.148

    Merci de votre aide
    Bartez

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Salut,

    Les expressions régulières servent à la manipulation des châines de caractères comme le découpage, la réécriture ou la validation syntaxique. Dans ton cas, c'est la validation syntaxique qui t'intéresse mais malheureusement, ce n'est pas assez puissant. Tu peux globalement vérifier qu'à tel ou tel endroit de la chaîne tu as tel caractère mais tu ne peux pas dire "à tel endroit j'ai un nombre compris entre X et Y". Pour ça, faut opter pour une autre façon de faire (qui ne s'appuie pas sur les expressions régulières) en utilisant plutôt une écriture binaire des adresses IP et des masques également binaires ou des comparaisons pour vérifier qu'une adresse est bien dans une plage donnée.

    Désolé.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Ici les regex ne te seront pas utiles.
    Fait un explode de ton ip avec comme délimiteur '.' et fait des tests sur les valeurs.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut Tant pis ....
    Merci de vos conseils... Je vais donc chercher autre chose

    je pensais bêtement qu'on pouvais écrire quelque chose comme ^[2-3]{1}.[0-1][3-4]{1}[0-9]{1}$

    En fait dans le fichier lque je cherchais à modifier, a syntaxe autorisée était
    @172.16.2.[0-9]+$

    Bonne soirée à vous tous
    Bartez

  5. #5
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    C'est surtout entre 30 et 148 que ça va pas etre possible en regex ^^
    Si tu veux t'amuser, tu fait un masque de sous réseau et tu fais des opérations binaires entre le masque et les ips.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Le problème c'est que je ne peux pas faire grand chose au niveau des données. Le fichier que je voudrait modifier est en fait un fichier texte qui fait parti d'un logiciel que je ne peux pas modifier. C'est simplement en regardant les divers fichiers de configurations dont il dépend que je me suis apperçu qu'il y avait ce genre d'écriture à l'intérieur. Par contre je ne peux pas détourner son fonctionnement quand il va lire les données dans ce fichier pour lui faire faire autre chose que de lire son fameux fichier texte....Je sais pas si j'ai été bien clair

    est ce qu'il ne serait pas possible, même si ce n'est pas très joli comme écriture, de faire quelque chose qui ai une logique de ce style:

    par exemple pour tester es adresses 172.16.2.30 à 172.16.2.148
    -------------
    Si j'ai 2 chiffres qui se suivent de 3 à 3 pour le 1er et de 0 à 9 pour le 2em ou Si j'ai 3 chiffres qui se suivent de 1 à 1 pour le 1er, de 0 à 4 pour le 2em et 0 à 8 pour le 3em = Alors OK

    Les 2 condition dans la même
    -------------

  7. #7
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Sa semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^172\.16\.(?:(?:2\.[3-9][0-9])|(?:2\.\d{3})|(?:3\.\d{2})|(?:3\.1[0-3][0-9])|(?:3\.14[0-8]))$#m

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Merci pour ton exemple 'Korko Fain', C'est exactement ce dont j'avais besoin

    Maintenant que j'ai vu que les Regex pouvaient répondre à mon besoin, Je vais me pencher plus sérieusement sur la question pour adapter ton code à mes besoins qui sont un peu plus compliqués.

    Encore merci de votre aide.

    Ce sujet est donc clos.
    bartez

  9. #9
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Hesite pas si tu as encore besoin de regex ^^

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Ok, Merci c'est sympa !

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

Discussions similaires

  1. Comment rechercher une Expression réguliére
    Par Jean-Seba dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 21/07/2011, 12h28
  2. Réponses: 4
    Dernier message: 24/05/2010, 13h15
  3. comment faire une expression régulière
    Par karimDevelopper dans le forum Débuter
    Réponses: 2
    Dernier message: 23/06/2009, 17h03
  4. Comment tester une expression régulière
    Par sasuke123456 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/02/2009, 11h34
  5. Réponses: 1
    Dernier message: 03/02/2006, 12h35

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