Holen Sie sich "Titel" - Attribut von html-link mit Regex
Ich habe den folgenden regulären Ausdruck für alle link-tags auf einer Seite generiert aus unserem custom cms
<a\s+((?:(?:\w+\s*=\s*)(?:\w+|"[^"]*"|'[^']*'))*?\s*href\s*=\s*(?<url>\w+|"[^"]*"|'[^']*')(?:(?:\s+\w+\s*=\s*)(?:\w+|"[^"]*"|'[^']*'))*?)>.+?</a>
Verwenden wir c#, um eine Schleife durch alle Spiele dieser, und fügen Sie einen onclick-event an jeden link (tracking-software) vor dem Rendern der Inhalte auf der Seite.
Ich muss analysieren Sie den link und fügen Sie einen parameter an die onclick-Funktion, die die "link-name".
Ich würde ändern Sie die regex, um die folgenden Untergruppen
- Das title-Attribut des link -
- Wenn der link enthält ein Bild-tag bekommen
der alt-text des Bildes - Der text des Links
Kann ich das dann überprüfen Sie die übereinstimmung der einzelnen Subgruppen zu aqquire die entsprechenden Namen der Verbindung.
Wie würde ich ändern die oben genannten regex dies zu tun, oder könnte ich das gleiche zu erreichen denken, mit c# - code?
- Sie sind mit ASP.NET zum generieren dieser Seite?
- Würde einige freundlicherweise mod bitte fügen Sie diese auf der FAQ-irgendwann?
- Ja, ich bin mit ASP.NET um die Seite zu erzeugen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Regexes sind grundsätzlich schlecht zu Parsen von HTML (siehe Können Sie einige Beispiele nennen, warum es schwer ist zu analysieren, XML und HTML mit regex? für warum). Was Sie brauchen, ist ein HTML-parser. Sehen Können Sie ein Beispiel geben, Parsen von HTML mit Ihrem Lieblings-parser? Beispiele für die Verwendung einer Vielzahl von Parser.
Insbesondere, die Sie interessieren können, der in der HTMLAgilityPack Antwort.
Versuchen Sie dies:
Ein paar Fallstricke:
Zu Extrahieren, verwenden Sie die groups-Auflistung:
Dank Chaos. Owens für den Hinweis mich in Richtung des HtmlAgilityPack Bibliothek, das ist großartig. am Ende habe ich es benutzt, um sich zu Sortieren mein problem, wie unten beschrieben.
Ich würde trotzig empfehlen diese Bibliothek für andere.