Feedback

C# - alle Links aus HTML Quelltext filtern

Veröffentlicht von am 18.03.2008
(1 Bewertungen)
Diese Methode gibt eine List<string> aller Links aus dem übergebenen HTML Quelltext zurück.

benötigte Usings:

using System.Collections.Generic;
using System.Text.RegularExpressions;
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

/// <summary> 
/// Gets the HTML links. 
/// </summary> 
/// <param name="html">The HTML.</param> 
/// <returns></returns> 
private List<string> GetHtmlLinks(string html)
{
    string linkPattern = "<a href=\"(.*?)\">(.*?)</a>";
    MatchCollection linkMatches = Regex.Matches(html, linkPattern, RegexOptions.Singleline);
    List<string> linkContents = new List<string>();
    foreach (Match match in linkMatches)
        linkContents.Add(match.Value);
    return linkContents;
} 
Abgelegt unter HTML, link, Regex.

6 Kommentare zum Snippet

dariusarnold schrieb am 20.03.2013:
Wie schreibt man einen Punkt in den Pattern? Einfach . Steht ja für Alles außer \n. Ich will aber, dass nur ein normaler Wald und Wiesen-Punkt akzeptiert wird.
Koopakiller schrieb am 21.03.2013:
Hallo, wie so oft, ein Backslash davor: \.
So gehts auch bei + * ( ) { } [ ] ...
dariusarnold schrieb am 21.03.2013:
Hatte ich probiert, aber er compiliert nicht: Nicht erkannte Escapesequenz. :(
Aber Danke :D
klaus_b schrieb am 22.03.2013:
Wenn du einen String mit Escapesequenzen an einen regulären Ausdruck übergibst, kannst du entweder einen doppelten Backslash vor Sonderzeichen setzen setzen oder ein at-Zeichen vor den gesamten string:
var linkPattern = @" \\hier dein Pattern ";
dariusarnold schrieb am 22.03.2013:
Man muss also die Backslashes 'escapen', die eine andere Sache 'escapen', da Regex Escapesequenzen vorsieht, die standardmäßig nicht unterstützt werden.. Richtig??

Vielen Dank..
klaus_b schrieb am 22.03.2013:
In etwa, ja.
Die String-Klasse kennt andere Escapesequenzen als die Regex-Klasse.
Eine Tabulatorzeichen musst du in einer String-Instanz escapen. In Regex fällt es mit unter die Whitespaces, für die du den Typ \s hast. Auch mit Umbrüchen verhält es sich so.
Die Escapesequenzen einer String-Instanz sehen immer "komisch" aus, wenn dieser String als Muster für einen regulären Ausdruck verwendet wird.
 

Logge dich ein, um hier zu kommentieren!