Regular Expression needed.


I need a regular expression that extracts the filename.gif from a string like <img src="filename.gif" alt="alttext">

But it could also be reordered and with some whitespaces like

<img alt="alttext" src = "filename.gif"/>

Thanks in advance
LVL 12
Who is Participating?

Improve company productivity with a Business Account.Sign Up

Peter KwanConnect With a Mentor Analyst ProgrammerCommented:
Or even simplier:

<img (?:\S+ )*src\s*=\s*"([^"]+)"(?: \S+)*

Open in new window

Peter KwanAnalyst ProgrammerCommented:
Please try this one.

<img (?:\S+ )*src\s*=\s*"([^"]+)"(?: \S+)*/>

Open in new window

dds_fellesConnect With a Mentor Commented:
I always use RegEx Coach to create / test / verify regular expressions.

I'm pretty sure is freeware;

Good luck ;-)
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

HugoHiaslAuthor Commented:
Thanks for the first responses.

I already have multiple <img src="filename.gif" alt=""> strings extracted from a html-page.

I need the get the filenames for the gifs.

In c# it shoult be a

string imageTagString = "<img src=\"filename.gif\" alt=\"\"/>";
MatchCollection matches = exp.Matches(imageTagString);

the matches[0] should be "filename.gif"

Best regards
Peter KwanAnalyst ProgrammerCommented:
Please try this sample code:

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections;

static class Program {
	static void Main(string[] args) {

		Regex exp=new Regex("<img (?:\\S+ )*src\\s*=\\s*\"([^\"]+)\"(?: \\S+)*");
		string imageTagString = "<img alt=\"\" src = \"filename.gif\"/>";
		MatchCollection matches = exp.Matches(imageTagString);
		foreach(Match m in matches)
			 Console.WriteLine("Test " + m.Groups[1]);

Open in new window

HugoHiaslAuthor Commented:
I used this one:
            Regex rg = new Regex(@"<img.*>", RegexOptions.IgnoreCase);

            MatchCollection matchList = rg.Matches(message.Body.Text);

            foreach (Match match in matchList)
                string imgString = match.Value;
                Regex rg2 = new Regex(@"<img (?:\S+ )*src\s*=\s*\""([^""]+)""(?: \S+)*");

                MatchCollection matchList2 = rg2.Matches(imgString);


Open in new window

matchList[0] contains
<img src="IVQHeader.gif" alt="Header">

matchList2[0] contains the same.

This seems not to be the right RegEx for rg2.
HugoHiaslAuthor Commented:
I only want the filename of the image which is in the src="filename.gif" part of the tag.

It would also be ok if it needs a 2 step approach with 2 RegEx.
HugoHiaslAuthor Commented:
The tool is perfect. Thanks.

I managed to get what I needed. Thanks to all.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.