Hallo Michael,

> ich habe folgenden Code um Links in HTML zu finden:
> 
> String pattern = @"<A[^>]*?HREF\s*=\s*[""']?([^'"" >]+?)[ '""]?>";
> MatchCollection mc = Regex.Matches(html, pattern, 
> RegexOptions.Singleline |
> RegexOptions.IgnoreCase);
> foreach (Match m in mc)
> {
>     Console.WriteLine("Match=" + m.subMatches(0));
> }
> 
> Leider bekomme ich nun immer den kompletten A-Tag, nicht nur 
> die URL! Was
> mache ich falsch?

Unter .NET kann man Gruppen in Regul�ren Ausdr�cken benennen:

// <a href="URI">Link!</a>
rexVerweise = new Regex(RegExpressionDTag1("a","href"),
        RegexOptions.IgnoreCase|RegexOptions.Compiled|RegexOptions.Multiline);
for (matTreffer = rexVerweise.Match(strPage); 
        matTreffer.Success; 
        matTreffer = matTreffer.NextMatch()) 
{
        if (matTreffer.Groups[1].Length>0) 
                try 
                {
                        Console.WriteLine("href='{0}'   Title='{0}'", 
                                matTreffer.Groups[1].ToString(),
                                matTreffer.Groups[2].ToString());               }
                catch (Exception e)
                {
                        Console.WriteLine("Error: '{0}'\r\n  - Message: '{1}'\r\n", 
                                matTreffer.Groups[1].ToString(), 
                                e.Message);
                }
}


Wobei RegExpressionDTag1("a","href") folgendes liefert:
<\s*a\s+(?:(?:href\s*=\s*(?:"(?<1>[^"]*)"|\'(?<1>[^\']*)\'|(?<1>[^\s>]+))||[^h\s>]\w*|h[^r\s>]\w*|hr[^e\s>]\w*|hre[^f\s>]\w*)[^>\w]*)*>(?<2>(?:[^<]|[<]\s*(?:[^/]|/\s*[^a]))*)

Ich hoffe die Zeile kommt lesbar an?!
Der Code stammt gro�teils aus dem msdn.

Gru�

Heiko Richler

| [aspdedotnet] als [email protected] subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an