Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2007, 17h27   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 13
Points : 2
Points : 2
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
bartez63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 17h50   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 311
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 311
Points : 8 592
Points : 8 592
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 20h09   #3
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
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.
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 21h26   #4
Invité de passage
 
Inscription : juillet 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 13
Points : 2
Points : 2
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
bartez63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 21h39   #5
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
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.
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 07h52   #6
Invité de passage
 
Inscription : juillet 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 13
Points : 2
Points : 2
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
-------------
bartez63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 09h30   #7
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Sa semble fonctionner :
Code :
#^172\.16\.(?:(?:2\.[3-9][0-9])|(?:2\.\d{3})|(?:3\.\d{2})|(?:3\.1[0-3][0-9])|(?:3\.14[0-8]))$#m
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 15h50   #8
Invité de passage
 
Inscription : juillet 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 13
Points : 2
Points : 2
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
bartez63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 16h07   #9
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Hesite pas si tu as encore besoin de regex ^^
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 17h26   #10
Invité de passage
 
Inscription : juillet 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 13
Points : 2
Points : 2
Ok, Merci c'est sympa !
bartez63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h09.


 
 
 
 
Partenaires

Hébergement Web