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 :

Probleme d'utilisation des Regex


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut Probleme d'utilisation des Regex
    Bonjour,
    J'aimerais recuperer le string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [img]http:/zzz.jpg[/img][/url]
    dans le texte suivant :
    [img]http:/yyy.jpg[/img]

    [ url=http:/xxx.jpg][img]http:/zzz.jpg[/img][/url]
    J'utilise actuellement l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\[img\\](.|\n)+?\\[/img\\]\\[/url\\]
    mais elle me renvoie tout le texte, c'est à dire qu'elle commence à la toute premiere balise [img] et se poursuit jusqu'à [/url]

    Je precise que les regex ne sont pas mon points forts ^^ et que mon probleme est assez urgent.

    Merci.

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Il faut récupérer la valeur du groupe. Pour que ce soit plus facile tu peux le nommer
    \\[img\\](?<mongoupe>(.|\n)+?)\\[/img\\]\\[/url\\]
    Tu peux récupérer la valeur du groupe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Match match = Regex.Match(input, pattern);
    if (match.Success)
        string value = match.groups["mongroupe"].Value;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut
    Merci pour ta réponse mais c'est étrange car il me retourne une valeur du groupe nulle.

  4. #4
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Tu peux tester le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // Ici imagine toi que ce sont tes deux chaînes de caractères (Le BBCode me prend la tête :aie:)
    string firstString = "";
    string secondString = "";
    Regex myRegex = new Regex(@"^(?<urlTagStart>\[url=(?<urlTagURL>\w+:\/\/[\w@][\w.:@]+\/?[\w\.?=%&=\-@/$,]*)\])?(?<imgTagStart>\[img\])(?<imgTagURL>\w+:\/\/[\w@][\w.:@]+\/?[\w\.?=%&=\-@/$,]*)(?<imgTagEnd>\[/img\])(?<urlTagEnd>\[/url\])?$", RegexOptions.IgnoreCase);
    Match myMatch = myRegex.Match(firstString);
    if (myMatch.Success) {
        // Affiche http://yyy.jpg
        Console.WriteLine(myMatch.Groups["imgTagURL"].Value);
    }
    myMatch = myRegex.Match(secondString);
    if (myMatch.Success) {
        // Affiche http://xxx.jpg
        Console.WriteLine(myMatch.Groups["urlTagURL"].Value);
        // Affiche http://zzz.jpg
        Console.WriteLine(myMatch.Groups["imgTagURL"].Value);
    }
    // Etc...
    Un outil tel qu'Expresso est extrêmement utile lorsque tu travailles avec des Regex (et puis il dispose d'un tas de bibliothèques de Regex, comme les URLs par exemple )

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut
    Ça fonctionne toujours pas...
    Je suis vraiment nul en regex...Si tu pouvais me donner quelques explications sur ce regex, ca m'arrangerais. De plus je n'ai qu'un seul string et non 2 comme c'est le cas dans ton code mais ce n'est pas le problème.
    Je vais me pencher sur Expresso.

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Tu peux utiliser l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<=\[url[^\]]+]).*?(?=\[/url\])
    qui te renverra le texte qui se trouve entre les balises [url...]...[/url]. Ce qui correspond à [img]http:/zzz.jpg[/img] dans ton cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string input = 
    @"[img]http:/yyy.jpg[/img]
    <a href="http:/xxx.jpg" target="_blank">[img]http:/zzz.jpg[/img]</a>";
     
    Match m = Regex.Match(input, "(?<=\\[url[^\\]]+]).*?(?=\\[/url\\])");
    Console.WriteLine(m.Value);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut
    Merci beaucoup, ca a l'air de très bien marcher.

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

Discussions similaires

  1. Probleme avec utilisation des filtres et des modeles
    Par Djolhan dans le forum Thunderbird
    Réponses: 0
    Dernier message: 08/04/2009, 22h30
  2. Probleme d'utilisation des sockets avec Swing
    Par tuxman dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 09/11/2008, 11h57
  3. [tcprewrite] utilisation des regex
    Par dahtah dans le forum Réseau
    Réponses: 0
    Dernier message: 01/10/2008, 13h12
  4. [RegEx] Utilisation des regex
    Par djus29 dans le forum Langage
    Réponses: 7
    Dernier message: 21/05/2008, 17h43
  5. Réponses: 3
    Dernier message: 11/05/2006, 22h53

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