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;
/// <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!