// http://stackoverflow.com/q/33707330/5290909
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string strIn = @"<a href=""someurl.html?query=foo"">";
string pattern = @"
<
(?<Tag_Name>(a)|img)\b
[^>]*?
\b(?<URL_Type>(?(2)href|src))
\s*=\s*
(?:""(?<URL>(?>\\.|[^\\""_#?&]+)*(?:_|(?<Query>[#?&]))(?>\\.|[^""\\]+)*)""
| '(?<URL>(?>\\.|[^\\'_#?&]+)*(?:_|(?<Query>[#?&]))(?>\\.|[^'\\]+)*)')
";
Regex re = new Regex( pattern,
RegexOptions.IgnoreCase | RegexOptions.Multiline
| RegexOptions.IgnorePatternWhitespace);
MatchCollection underscoreLinks = re.Matches(strIn);
for (int mnum = 0; mnum < underscoreLinks.Count; mnum++)
{ //loop matches
Match match = underscoreLinks[mnum];
Console.WriteLine("Match #{0} - Value: {1}", mnum + 1, match.Value);
}
}
}
Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMzM3MDczMzAvNTI5MDkwOQp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKIApwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJc3RyaW5nIHN0ckluID0gQCI8YSBocmVmPSIic29tZXVybC5odG1sP3F1ZXJ5PWZvbyIiPiI7CgkJc3RyaW5nIHBhdHRlcm4gPSBAIgoJCQk8CgkJCSAgKD88VGFnX05hbWU+KGEpfGltZylcYgoJCQkgIFtePl0qPwoJCQkgIFxiKD88VVJMX1R5cGU+KD8oMilocmVmfHNyYykpCgkJCSAgXHMqPVxzKgoJCQkgICg/OiIiKD88VVJMPig/PlxcLnxbXlxcIiJfIz8mXSspKig/Ol98KD88UXVlcnk+WyM/Jl0pKSg/PlxcLnxbXiIiXFxdKykqKSIiCgkJCSAgfCAgJyg/PFVSTD4oPz5cXC58W15cXCdfIz8mXSspKig/Ol98KD88UXVlcnk+WyM/Jl0pKSg/PlxcLnxbXidcXF0rKSopJykKCQkJIjsKCQlSZWdleCByZSA9IG5ldyBSZWdleCggcGF0dGVybiwKCQkJCQkJCQlSZWdleE9wdGlvbnMuSWdub3JlQ2FzZSB8IFJlZ2V4T3B0aW9ucy5NdWx0aWxpbmUKCQkJCQkJCQl8IFJlZ2V4T3B0aW9ucy5JZ25vcmVQYXR0ZXJuV2hpdGVzcGFjZSk7CiAKIAoJCU1hdGNoQ29sbGVjdGlvbiB1bmRlcnNjb3JlTGlua3MgPSByZS5NYXRjaGVzKHN0ckluKTsKCQlmb3IgKGludCBtbnVtID0gMDsgbW51bSA8IHVuZGVyc2NvcmVMaW5rcy5Db3VudDsgbW51bSsrKQoJCXsgICAvL2xvb3AgbWF0Y2hlcwoJCSAgICBNYXRjaCBtYXRjaCA9IHVuZGVyc2NvcmVMaW5rc1ttbnVtXTsKCQkgICAgQ29uc29sZS5Xcml0ZUxpbmUoIk1hdGNoICN7MH0gLSBWYWx1ZTogezF9IiwgbW51bSArIDEsIG1hdGNoLlZhbHVlKTsKCQl9Cgl9Cn0=