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

C# Discussion :

[C#] Expressions régulières


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Par défaut [C#] Expressions régulières
    Bonjour

    J'aimerais avoir un expression régulière qui efface tout ce qu'il y a entre les baslises <head> et </head> d'une page web.

    Ma regex ne marche pas, je ne comprend pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string lines = "ma marche<head>pas</head>snif";
    string pat = (@"([^<head>]*<head>)([^</head>]*)(</head>.*)");
    Regex r = new Regex(pat);
     
    lines = r.Replace(lines, "$1$3", 1);
    Pouvez vous m'aider ?

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut Ecome.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string lines = "ma marche<head>pas</head>snif";
    string pat = (@"(?<avant>.*<head>).*(?<apres></head>.*)");
    Regex r = new Regex(pat,RegexOptions.Compiled);
    lines = r.Match(lines).Result("${avant}${apres}")

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Par défaut
    Merci de ta réponse, cependant celà ne fonctionne pas non plus.
    Je dois avoir des caracteres etrange peut etre je vais regarder de plus pret...

  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 : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    re essaie comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string pat = (@"(?<avant>[\s\S]*<head>)[\s\S]*(?<apres></head>[\s\S]*)");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Par défaut
    Merci elle fonctionne celle-ci.

    Pourquoi la mienne ne foncitonnait pas ?

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par Eome
    Merci elle fonctionne celle-ci.

    Pourquoi la mienne ne foncitonnait pas ?
    Parce qu'elle est fausse

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Par défaut


    Si jamais j'ai plusieurs match par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string lines = "dkkjsqf<head>jdhdjhs</head>jdfhdhf<head>djhdsgjh</head>sf";
    Comment je fais pour récuprer ce qu'il y a entre toutes les balises head ?

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Pour plusieurs raison :

    ^: represente le debut de la chaine en entree
    [^<head>]* : veut dire que le head au debut doit etre repeté pkusieurs fois

    Enfin elle est mal structurée. analyse plutot le pattern que je t'ai donné

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par Eome
    Comment je fais pour récuprer ce qu'il y a entre toutes les balises head ?
    regarde ce Thread [VB.Net] Comment extraire un texte entre deux arguments ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Par défaut
    J'ai pu faire ce que je voulais je te remercie

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par mehdi_tn
    [^<head>]* : veut dire que le head au debut doit etre repeté pkusieurs fois
    hum cette assertion est fausse. En effet, cela signifie que <head> peut être présent 0 ou plusieurs fois. Bref, ca ne sert à rien dans son cas.
    et de plus on ne peux pas avoir plusieurs fois <head> répéré, qui soit chacune en début de chaine, l'une après l'autre.
    D'ou une erreur mais il aurait utilisé ? plutôt que *, le résultat aurait été le même, ca n'aurait pas beaucoup mieux fonctionné.

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par cinemania
    hum cette assertion est fausse. En effet, cela signifie que <head> peut être présent 0 ou plusieurs fois. Bref, ca ne sert à rien dans son cas.
    Oui tu as raison, c'est ce que je voulais lui expliquer, mais j'ai ecris trop vite

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  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