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

ASP.NET Discussion :

[RegEx] Utiles dans mon cas?


Sujet :

ASP.NET

  1. #1
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut [RegEx] Utiles dans mon cas?
    Bonjour tout le monde.

    Je connais pas gd chose aux RegEx et je me demandais si elles pourraient m'être utile.

    J'ai un fichier .htm.
    Je dois le parcourir et modifier tous les liens que je trouve en suivants qqs règles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     - si c'est un lien absolu: je fais rien
     - si c'est un lien relatif:
              - si ça concerne un link: je le modifie d'une certaine façon
              - si ça concerne une image ou un CSS, je le modifie d'une autre façon
    .

    Est-ce que ça vaut le coup que je me renseigne pour les RegEx???

    Merci à tous

  2. #2
    Membre confirmé Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Par défaut
    Perso, je pense que tu devrais, tu vas peut etre prendre un certain pour arriver à tes fin mais quand tu métriseras les expression régulières, tu verras toutes les possibilités qu'elles t'offrent.

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Donc elles me permettront de retrouver les différents liens dans ma page en respectant mes critères de recherche?

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par lutecefalco
    Donc elles me permettront de retrouver les différents liens dans ma page en respectant mes critères de recherche?
    Effectivement, c'est possible avec les RegEx. Fais une petite recherche sur le forum dot net avec les mots clés RegEx ou RegExp et tu trouveras plein d'exemples.

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    J'ai une expression régulière qui me permet de récuperer le contenu href d'un lien avec une gestion de la présence ou non de quotes

    Voilà le pattern (c'est du VB.NET là):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern = "href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    <a href="lien_avec_quote.htm">...</a> me retourne bien lien_avec_quote.htm
    <a href=lien_sans_quote.htm>...</a> me retourne bien lien_sans_quote.htm

    J'aimerai l'améliorer un peu en imposant la présence de "<a" pour être sûr que je me trouve bien dans un lien.

    J'ai essayé ce pattern mais ça marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern = "<a\s*[^>]\s*href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Qq'un a une idée?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern = "<a\s*href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Celui là marche bien à condition que le href arrive juste après le <a.
    J'aimerais pouvoir gérer la présence d'un autre attribut entre le <a et le href

  7. #7
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par lutecefalco
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern = "<a\s*href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Celui là marche bien à condition que le href arrive juste après le <a.
    J'aimerais pouvoir gérer la présence d'un autre attribut entre le <a et le href
    Essai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pattern = "<a\s*(\w*=""\w+""\s+)*href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est trop contraignant car \w impose un caractère alpha numérique et donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="window.print();return false" href="">Imprimer</a>
    n'est pas validée.

    J'aimerai autoriser tout sauf le caractère '>'.
    Je pensais que la syntaxe était [^>] mais ça marche pas apparemment, ou alors je me suis trompé

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu as essayé avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<a.*?href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par SaumonAgile
    Tu as essayé avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<a.*?href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"

    Yes!!!!!!!!!
    Merci

    PS: ca marche aussi sans le '?' au niveau de <a.*?. En fait je comprends pas à quoi il sert le '?' dans ce cas là

  11. #11
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par SaumonAgile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<a.*?href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Le pattern n'est pas très bon aussi pour ce que tu veux faire. les chaine "<axxx href=" ou "<a> href" sont acceptés.

    Il faut que tu definisse exactement le format de tes attributs car je vois mal un truc de ce genre : "<a .7888845}="val" href"

    Si tu veux que tout soit accepté sauf > et les espaces en prenant en compte les espaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a\s*(([^\s>])+=""([^\s>])+""\s+)*href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))"
    Les cas non acceptés sont <axxxx <a xxxx yyy="yyyy"
    Les cas acceptés sont <a xxx="xxxx" , <a yyy*+.7775="yyy7..7"

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par mehdi_tn
    Le pattern n'est pas très bon aussi pour ce que tu veux faire. les chaine "<axxx href=" ou "<a> href" sont acceptés.
    Exact mais comme l'idée n'était pas de valider un document HTML mais plutot d'extraire des informations, j'ai opté pour une solution simple.

    Cette expression plus efficace élimine ces deux cas là "<axxx href=" ou "<a> href" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a\s+[^>]*?href\s*=\s*(?:(?:""(?<url>[^""]*)"")|(?<url>[^>]*))
    Citation Envoyé par lutecefalco
    En fait je comprends pas à quoi il sert le '?' dans ce cas là
    En fait, c'est un quantifieur feignant, il va prendre le moins possible de caractères, cad que le moteur va essayer de matcher le minimum de caractères possible dans l'expression .*?
    Sans le ? le moteur va essayer de mettre la plus grande chaine possible dans .*, donc tu aurais pu rater des éléments.

    Exemple en enlevant le ? de l'expression, cette chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="window.print();return false" href="index.htm">Imprimer</a><a onclick="window.print();return false" href="index2.htm">Imprimer</a>
    ne va matcher que "index2.htm" car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onclick="window.print();return false" href="index.htm">Imprimer</a><a onclick="window.print();return false"
    est "mangée" par le .*
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Merci à tous

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

Discussions similaires

  1. z-index utile dans mon cas ?
    Par macbida dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/10/2012, 09h38
  2. [ZF 1.9] Zend utile dans mon cas ?
    Par Haxor668 dans le forum Zend Framework
    Réponses: 6
    Dernier message: 19/09/2009, 09h19
  3. CMS utile dans mon cas ?
    Par lbrun79 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 21/10/2007, 22h02
  4. [Débutant][JList] Comment ça marche dans mon cas ?
    Par Invité dans le forum Composants
    Réponses: 31
    Dernier message: 28/06/2004, 10h45
  5. Quel type de BDD dans mon cas
    Par zoubidaman dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 10/06/2004, 18h00

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