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 :

Regex site et dossier


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Points : 74
    Points
    74
    Par défaut Regex site et dossier
    Bonjour,

    j'ai besoin de vos lumières sur un problème avec une regex.
    Son but est de vérifier qu'une chaîne de caractere soit de type:

    http://www.site.com
    http://site.com
    www.site.com
    http://www.site.com/dossier
    http://site.com/dossier/dossier2
    http://XX.X.XXX.XX (une IP)
    ...

    Bref, le type d'urls classiques d'un site ainsi que la possibilité d'avoir un ou plusieurs dossiers.
    Un "/" pouvant etre mis a la fin. (je ne l'ai pas encore implanté dans ma regex)

    Voici ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my($testurl)="^((http://)|(www\.))+(([a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})|([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}))+(\S)*$";
    Evidemment si elle fonctionnait je ne viendrais pas vous embéter!
    Mais voila, déja au début je peux taper "wwww." ca fonctionne quand meme
    Et quand je rajoute la possibilité de mettre des dossiers (\S)* ??? Plus rien ne fonctionne, je suis débutant dans ce domaine et plusieurs heures passées a comprendre, rechercher et modifier, mais ça ne veux vraiment pas.

    Si quelqu'un pouvait me dire ou j'ai fais mon erreur ca serait cool

    Merci beaucoup bonne journée

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    regarde du coté de Regexp::Common sur cpan, tu y trouvera ton bonheur:

    http://search.cpan.org/~abigail/Regexp-Common-2.120/
    http://search.cpan.org/~abigail/Rege...on/URI/http.pm
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  3. #3
    Membre régulier
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Points : 74
    Points
    74
    Par défaut
    J'ai installé le package je regarde dès que possible, pour le moment, les cours
    Je ne connaissais pas, merci du renseignement

  4. #4
    Membre régulier
    Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2004
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juin 2004
    Messages : 88
    Points : 74
    Points
    74
    Par défaut
    Désolé pour le double post.

    Ce package fonctionne très bien, mais je ne pense pas qu'il corresponde a mes attentes ou alors je n'arrive pas a m'en servir correctement.

    Quand une url est invalide pas de soucis, mais quand elle est valide, je pensais récupérer tout sauf le nom du fichier et ses éventuels paramètres.

    Cependant, je n'arrive pas à le faire. Je peux récupérer le domaine et TLD (ensemble) http://www.site.com mais www.site.com ne fonctionne pas

    aussi un des autres paramètres me renvoie /dossier/fichier.html mais pas juste /dossier comme je voudrais

    dommage que ma regex ne fonctionne pas car mes besoins sont un peu trop spécifiques pour utiliser ce package

    Si quelqu'un peut m'aider, merci beaucoup.

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Parfois, il faut savoir faire un conpromis entre l'usage d'un module et tout faire à la main... Par exemple tu dis que tu récupères /dossier/fichier.html mais pas /dossier comme tu le voulais... Es-tu sûr que ce soit si rédhibitoire que ça ? Personnellement il me semble qu'une regex ultra-simple suffirait pour extraire l'un de l'autre, non ?
    Et il suffit de vérifier si la string commence par "http://" et de le rajouter au besoin pour faire face à ton autre petit problème, non ??

    Think out the box !

    --
    Jedaï

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Il y a beacoup plus de possibilites pour une URI que ce que le regex essaye de verifier. Pour valider un URI il serait mieux d'utiliser une des librairies qui ont ete proposes. Pour en extraire certains elements il n'est pas necessaire d'etre trop restrictif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    my $testurl = qr|^
       (?:http://)?  # un prefixe optionel
       ([^/]+)       # le nom de domaine
       (/(?:[^/]+/)*)# le dossier
       ([^/]*)       # le nom de fichier
    $|x;

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Néanmoins ta regex matche aussi des choses comme : "&.!§$m^m" ou ".............../*$£¤/*$$^^"... En fait pour être précis elle matche à peu près n'importe quelle chaîne ! (ben oui : "éventuellement 'http://'" "n'importe quoi sauf '/'" "n'importe quoi sauf '/' suivi par un '/'" x fois puis "n'importe quoi sauf '/', ça matche toute les chaîne sauf celles où il y a deux '/' qui se suivent...)
    Alors il faut savoir ce qu'on veut : si on veux un vérificateur d'URL ta solution n'est visiblement pas top, mais si on a des URLs et qu'on veut les découper, elle peut convenir, tout dépend du besoin . (c'est ce que tu as dis, mais je pensais utile de préciser à quel point ta regex était généraliste)

    --
    Jedaï

Discussions similaires

  1. redéfinir le dossier de base d'un site
    Par maa dans le forum ASP.NET
    Réponses: 8
    Dernier message: 27/01/2007, 19h07
  2. Réponses: 4
    Dernier message: 28/11/2006, 00h24
  3. [HTML] prédéfinir le chemin du dossier des images de mon site
    Par cari dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/10/2006, 22h58
  4. Réponses: 2
    Dernier message: 12/10/2005, 18h45
  5. liens hors dossier racine du site
    Par natjoker dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 13/09/2005, 03h00

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