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 :

Trouver des balises HTML img avec les regex dans un texte HTML


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut Trouver des balises HTML img avec les regex dans un texte HTML
    Je tiens à préciser que ce sujet est dans le forum PHP/Regex par défaut
    En fait je cherche un forum Regex pur.
    Je travaille en C# / ASP.NET.
    Pouvez vous déplacer le sujet si c'est nécessaire ?


    Bonjour

    J'ai besoin d'aide ou de renseignements sur la création d'un regex.

    Ce que je veux :

    Voici ma chaîne de caractères à analyser :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h4 style="text-align: center"><span style="color: #ff0000"><u><em><strong>Le contenu de l'explication&nbsp; B</strong></em></u></span></h4>
    <p>En raison de ....<br />
    C'est <strong>pour </strong>cela qu'il faire attention &agrave; <img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif" />&nbsp;<img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.gif" />&nbsp;<img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif" /></p>

    Comme vous pouvez le voir, c'est du HTML.
    Dans ce HTML, je veux trouver toutes les chaînes correspondant aux balises image.

    Donc dans mon regexp, les règles sont :
    1) chaîne commençant par "<img".
    2) chaîne finissant par "" \>" ou juste "\>" à la limite
    3) N'importe quelle chaîne entre les deux (alphanumerique, espace, caractère spéciaux TOUT !!)
    A priori, c'est assez simple mais j'y arrive pas.

    Là en l’occurrence dans ma chaîne d'exemple, le regex doit trouver 3 résultats.


    => Comment écrire mon regexp ?
    => Pouvez vous m'expliquer comment dans le langage regex, comment on dit n'importe quelle chaîne ? (je sais que le . c'est n'importe quelle caractère, mais comment dis-t-on n'importe quelle chaîne ?)

    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ étant moi-même une bille en regex, je t'invite à faire comme moi et à lire ce tuto : Initiation aux expressions régulières en PHP

    2/ que cherches-tu à faire ?
    - supprimer les images ? (balises et contenu)
    - récupérer tout le contenu des balises ?
    - récupérer uniquement les noms des images ?
    - autre ... ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ceci devrait faire l'affaire :
    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
    <?php
    $subject = '
    <h4 style="text-align: center"><span style="color: #ff0000"><u><em><strong>Le contenu de l\'explication&nbsp; B</strong></em></u></span></h4>
    <p>En raison de ....<br />C\'est <strong>pour </strong>cela qu\'il faire attention &agrave; <img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif" />&nbsp;
    <img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.gif" />&nbsp;<img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif" /></p>
    ';
     
    $pattern  = "#<img(.*)/>#Ui";
        if(preg_match_all($pattern, $subject, $matches))
        {
            echo "Oui :<br /><pre>";
    		print_r($matches);
    		echo "</pre>";
        }
    ?>

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    Ne vaudrait-il pas mieux utiliser DOM dans ce cas : http://www.php.net/manual/fr/book.dom.php ?
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Mon but est de modifier l'attribut "src" des balises HTML image, afin de les afficher correctement sur mon site de production.

    Exemple :

    "http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif"

    doit devenir :

    "http://static.images.monsite.com/content/images/1/Explanations/angry_smile.gif"

    Donc plus précisément mon but est :
    Trouver toutes les chaînes correspondantes à l'attribut src des balises images.
    Le résultat de la recherche dans le texte que j'ai mis en exemple serait donc :

    "http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif"
    "http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.gif"
    "http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif"

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Johann7751 Voir le message
    "http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif"
    doit devenir :
    "http://static.images.monsite.com/content/images/1/Explanations/angry_smile.gif"
    Dans ce cas, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	$src_avant = 'http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/';
    	$src_apres = 'http://static.images.monsite.com/content/images/1/Explanations/';
    	$subject2 = str_replace('src="'.$src_avant, 'src="'.$src_apres, $subject);
    ?>
    non ?

  7. #7
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Je dois d'abord trouver toutes les chaînes src des balises images puis, oui, après je fais un Replace.
    Mais en fait mon but de ce sujet c'est vraiment de trouver le pattern du regex qui me permet de trouver ce que j'ai énoncé.
    Indépendamment du langage de programmation, juste le pattern.

    (Tu m'écris du code en PHP, je suis une bille dans ce langage, je code en C# / ASP.NET)

  8. #8
    Invité
    Invité(e)
    Par défaut
    #<img(.*)/>#Ui

    explication :
    # -> (délimiteurs) début et fin de regex
    <img -> commence par ...
    (.*) -> n'importe quel caracteres ...
    /> -> finit par ...
    U -> (modificateur) "Ungreedy", c'est-à-dire non gourmand. Cela signifie que l'expression trouvera des résultats aussi petits que possible.
    i -> (modificateur) Permet de ne pas tenir compte de la casse

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Avec DOMDocument comme l'a mentionné @Nesmontou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $doc = new DOMDocument;
    $doc->loadHTMLFile('/chemin/vers/ton/html');
     
    $list = $doc->getElementsByTagName('img');
    foreach ($list as $node) {
      if ($node->hasAttribute('src') {
         $src = $node->getAttribute('src');
         $filename = basename($src);
         $node->setAttribute('src', 'http://static.images.monsite.com/content/images/1/Explanations/' . $filename);
      }
    }
     
    echo $doc->saveHTML();
    Arrêtez de parser du HTML avec des REGEXP, c'est beaucoup plus simple avec le DOM

  10. #10
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Merci pour les explications du pattern regex :
    "#<img(.*)/>#Ui"
    Malheureusement, il ne fonctionne pas.

    Voici le code C# pour info :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    string regexPattern = "#<img(.*)/>#Ui";
                    Regex myRegex = new Regex(regexPattern);
                    MatchCollection mc = myRegex.Matches(myText);

    J'ai rien dans mon objet mc de type MatchCollection
    Je vais essayer la piste du DOMDocument, voir si il existe une classe de ce type en C#..

  11. #11
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par Nesmontou Voir le message
    Ne vaudrait-il pas mieux utiliser DOM dans ce cas : http://www.php.net/manual/fr/book.dom.php ?
    Citation Envoyé par Benjamin Delespierre Voir le message
    Arrêtez de parser du HTML avec des REGEXP, c'est beaucoup plus simple avec le DOM
    J'aurais dit la même chose s'il développait en PHP

    Par contre, je suis presque persuadé qu'il existe des parseurs de HTML en C# / ASP.NET ...
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  12. #12
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    Par contre, je suis presque persuadé qu'il existe des parseurs de HTML en C# / ASP.NET ...
    Effectivement, il existe le très bon HtmlAgilityPack.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  13. #13
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Comme précisé dans mon autre post, je pense que le problème vient du fait de travailler avec des urls absolues plutôt que des relatives. Néanmoins, la réponse est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<pre><img.*?src=".*?://)(?<host>.*?)(?<post>/.*?".*?/>)
    Ce qui avec une expression de remplacement comme celle ci ${pre}bouh${post} transforme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h4 style="text-align: center"><span style="color: #ff0000"><u><em><strong>Le contenu de l'explication&nbsp; B</strong></em></u></span></h4>
    <p>En raison de ....<br />C'est <strong>pour </strong>cela qu'il faire attention &agrave; <img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif" />&nbsp;<img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.gif" />&nbsp;<img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif" /></p>
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h4 style="text-align: center"><span style="color: #ff0000"><u><em><strong>Le contenu de l'explication&nbsp; B</strong></em></u></span></h4>
    <p>En raison de ....<br />C'est <strong>pour </strong>cela qu'il faire attention &agrave; <img alt="" src="http://bouh/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/angry_smile.gif" />&nbsp;<img alt="" src="http://bouh/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.gif" />&nbsp;<img alt="" src="http://bouh/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif" /></p>

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<pre><img.*?src=".*?://)(?<host>.*?)(?<post>/.*?".*?/>)
    Est-ce que cela marche en multilignes? Si il y a un retour à la ligne entre deux attributs le tag ne match pas on dirait.

    Je propose aussi ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    src\s*=\s*"(?<url>([\w:\/+-.%]*(gif|jpg|png)))
    Testé ici: http://regexhero.net/tester/
    avec
    <h4 style="text-align: center"><span style="color: #ff0000"><u><em><strong>Le contenu de l'explication&nbsp; B</strong></em></u></span></h4>
    <p>En raison de ....<br />
    C'est <strong>pour </strong>cela qu'il faire attention &agrave;
    <img alt="" src="http://www.localhost:2302/angry_sm-ile.png" />&nbsp;<img alt=""
    src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/cry_smile.jpg" />&nbsp;
    <img alt="" src="http://localhost:2302/WebSiteCarblocksUpdator/fckeditor/editor/images/smiley/msn/thumbs_down.gif" /></p>
    A+

    EDIT ou encore plus simple à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    src\s*=\s*"(?<url>(.*(gif|jpg|png)))
    "Winter is coming" (ma nouvelle page d'accueil)

  15. #15
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Est-ce que cela marche en multilignes? Si il y a un retour à la ligne entre deux attributs le tag ne match pas on dirait.
    Ca marche avec une déclaration comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regex = new Regex("(?<pre><img.*?src=\".*?://)(?<host>.*?)(?<post>/.*?\".*?/>)", RegexOptions.Singleline);

  16. #16
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Ca marche avec une déclaration comme ceci:
    "Winter is coming" (ma nouvelle page d'accueil)

  17. #17
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Premièrement merci pour toutes les réponses, et merci pour m'avoir fait connaître le site regexhero !

    J'avais fini par trouver écrire un regex dont le pattern est :
    <img([a-zA-Z0-9_.:\\/ ="[\]-]*)>
    => Il va trouver toutes les balises images de mon texte.
    La plupart des regex que vous me proposez fonctionnent également (j'ai beaucoup du mal à les déchiffrer par contre )

    Notamment celui là qui trouve les balises images :
    (?<pre><img.*?src=".*?://)(?<host>.*?)(?<post>/.*?".*?/>)

    et celui-ci qui trouve les balises sources :
    src\s*=\s*"(?<url>([\w:\/+-.%]*(gif|jpg|png)))

    Notamment, dans ces pattern, je connais pas la signification des termes entre chevrons dans les regex (<url>, <host>, <post>, <pre> notamment..)
    C'est quoi ça du regex avancé ? Ce sont des mots clés du regex

    Et est ce qu'il est possible de construire un regex qui sélectionne seulement les balises "src "(et leur contenu), seulement les balises "src" contenues dans les balises images ?

  18. #18
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Johann7751 Voir le message
    Notamment, dans ces pattern, je connais pas la signification des termes entre chevrons dans les regex (<url>, <host>, <post>, <pre> notamment..)
    C'est quoi ça du regex avancé ? Ce sont des mots clés du regex
    Ce sont des groupes de capture nommés: comme tu peux le voir dans mon expression qui fait le remplacement, au lieu de manipuler des ${1} et des ${2} je manipule des ${host}, ${pre}, ${post}. Pareil quand je fais un Regex.Match, je peux accéder via le nom du groupe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var regex = new Regex("bl(?<test>.*)");
     
    var match = regex.Match("bla");
    var toto = match.Groups["test"].Value; // plutot que match.Groups[1].Value
    Citation Envoyé par Johann7751 Voir le message
    Et est ce qu'il est possible de construire un regex qui sélectionne seulement les balises "src "(et leur contenu), seulement les balises "src" contenues dans les balises images ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<pre><img.*?)(?<src>src=".*?")(?<post>.*?/>)
    Néanmoins, ca ne change pas le fait qu'il est déconseillé de bosser avec des urls absolues :p

  19. #19
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Merci pour l'explication.
    Tu m'as fait découvrir la notion de groupe dans les regex.
    C'est puissant.

  20. #20
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Dans la continuité de ce sujet donc j'ai mon regex qui me trouve le contenu de l'attribut "src" des balises images.

    Le pattern dans regexhero :
    <img([a-zA-Z0-9_.:\\/ ="[\]-]*)src="(?<src>[a-zA-Z0-9_.:\\/ ="[\]-]*)"([a-zA-Z0-9_.:\\/ ="[\]-]*) />

    Le pattern dans mon code :
    (différent de celui d'au dessus car je suis obligé d'échapper les guillemets par exemple)

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string pattern = "<img([a-zA-Z0-9_.:\\/ =\"[\\]-]*)src=\"(?<src>[a-zA-Z0-9_.:\\/ =\"[\\]-]*)\"([a-zA-Z0-9_.:\\/ =\"[\\]-]*) />"

    Explications :
    => Le Regex me trouve les balises images.
    => je peux accéder, à l'intérieur de chaque balise image, au contenu de l'attribut "src" grâce à mon groupe ?<src>.



    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    string pattern = "<img([a-zA-Z0-9_.:\\/ =\"[\\]-]*)src=\"(?<src>[a-zA-Z0-9_.:\\/ =\"[\\]-]*)\"([a-zA-Z0-9_.:\\/ =\"[\\]-]*) />";
                    Regex a_regex = new Regex(pattern);
                    string input = "bla bla ...";
                    MatchCollection mc = a_regex.Matches(input);
                    foreach (Match m in mc)
                    {
                        string contentAttributeSrc = m.Groups["src"].Value;
                    }

    Donc j'aimerais utiliser la méthode Replace du Regex pour :
    Remplacer le groupe ?<src> de tous mes matchs par une chaîne de caractère.

    Mon problème est que je veux remplacer seulement le groupe ?<src> dans la chaine matchée et non pas toute la chaîne matchée.
    Comment faire ?

    Je suis en train de chercher je pense pouvoir m'en sortir avec la surcharge de Replace utilisant un delegué MatchEvaluator..

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XHTML 1.0] Balise img avec les attributs class ou id
    Par Touty11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 23/04/2012, 11h53
  2. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  3. [RegEx] Extraction des mot dans un paragraph avec les REGEX
    Par geforce dans le forum Langage
    Réponses: 0
    Dernier message: 29/03/2010, 18h58
  4. [HTML] Problème avec les options de la balise <p>
    Par Balflear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 22/06/2006, 10h48
  5. Position des balises H2 ou comment les numéroter
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/07/2003, 19h24

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