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