Mais il va falloir que j'implémente tous les caractères autorisés dans une URL non codée pour que l'appli soit générique (ne serait-ce que les deux-points pour une URL absolue http://...)
[\w/-]*par
.*?qui signifie "n'importe quel caractère répété un nombre inconnu le plus petit possible"
(?<=src=")\w*(?:\.gif|\.jp[e]?g|\.png)
http://regexstorm.net/tester?p=%28%3f%3c%3dsrc%3d%22%29%5cw*%28%3f%3a%5c.gif%7c%5c.jp%5be%5d%3fg%7c%5c.png%29&i=%3cp+class%3d%22TitrePage+%22%3e+%3cimg+src%3d%22drapeau_myanmar.png%22+width%3d%22132%22+height%3d%2287%22+class%3d%22ImgL%22%3e+%3cimg+src%3d%22drapeau_boudhiste.png%22+width%3d%22136%22+height%3d%2289%22+class%3d%22ImgR%22%3e+Voyage+au+Myanmar%3cbr%3e+%3cimg+src%3d%22drapeau_boudhiste1.png%22+width%3d%22136%22+height%3d%2289%22+class%3d%22ImgR%22%3e+Voyage+au+Myanmar%3cbr%3e
(?<=src=")\w*\.(?:gif|jp[e]?g|png)
<p><img src="maquette_kuthawdaw.png" width="907"></p> <p class="centered"><img src="photos/2019-11-28/large/20191128_095919_GM.jpg" width="49%"> <img src="photos/2019-11-28/large/20191128_100050_GM.jpg" width="49%"></p> <p class="centered"><img src="photos/2019-11-28/large/20191128_101710_GM.jpg" width="49%"> <img src="photos/2019-11-28/large/20191128_101541_GM.jpg" width="49%"></p>
MatchCollection Matches = Rx.Matches(txtSource.Text); foreach (Match match in Matches) { ListViewItem Item = new ListViewItem(); Item.Text = match.Value; Item.SubItems.Add(match.Index.ToString()); lvwResults.Items.Add(Item); }
Après une étude en pas à pas, j'ai découvert un truc curieux: alors qu'avec mon expression initiale chaque match avait 2 groupes ([0] = le match entier, [1] = capture), avec cette nouvelle expression chaque match n'a plus qu'un seul groupe qui contient la capture.
et si à la place de plusieurs groupes on faisait en sorte que les captures ne prennent que le chemin de l'image et qu'il y ait une capture par chemin?
J'ai tenté de le remplacer pas [\w/]* mais cela ne fonctionne pas.oui, parce qu'il faut ajouter les -
(?<=src=")[\w/-]*\.(?:gif|jp[e]?g|png)
http://regexstorm.net/tester?p=%28%3f%3c%3dsrc%3d%22%29%5b%5cw%2f-%5d*%5c.%28%3f%3agif%7cjp%5be%5d%3fg%7cpng%29&i=++++++++++%3cp%3e%3cimg+src%3d%22maquette_kuthawdaw.png%22+width%3d%22907%22%3e%3c%2fp%3e%0d%0a++++++++++%3cp+class%3d%22centered%22%3e%3cimg+src%3d%22photos%2f2019-11-28%2flarge%2f20191128_095919_GM.jpg%22+width%3d%2249%25%22%3e+%0d%0a++++++++++%3cimg+src%3d%22photos%2f2019-11-28%2flarge%2f20191128_100050_GM.jpg%22+width%3d%2249%25%22%3e%3c%2fp%3e%0d%0a++++++++++%3cp+class%3d%22centered%22%3e%3cimg+src%3d%22photos%2f2019-11-28%2flarge%2f20191128_101710_GM.jpg%22+width%3d%2249%25%22%3e+%0d%0a++++++++++%3cimg+src%3d%22photos%2f2019-11-28%2flarge%2f20191128_101541_GM.jpg%22+width%3d%2249%25%22%3e%3c%2fp%3e
(?<=src=")veut dire que scr=" doit être devant mais est exclus de la capture.
(?:truc)veut dire que truc fait partie de la capture mais ne doit pas faire l'objet d'un groupe, ça permet de limiter la portée d'un ou par exemple.
azertyuiop|qsdfghjklmveut dire azertyuiop ou qsdfghjklm
azertyuio(p|q)sdfghjklmveut dire azertyuio(p ou q)sdfghjklm avec p ou q donne un groupe
azertyuio(?:p|q)sdfghjklmveut dire azertyuio(p ou q)sdfghjklm avec p ou q ne donne pas un groupe
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionif (group == match.Groups[0]) continue;pour ne pas traiter la capture complète.
(?<=src=")[^<>'#]*\.(?:gif|jp[e]?g|png)
Uri.UnescapeDataString().
19 juil. 2020 à 10:42
https://regex101.com/r/91sVYJ/3