2017-07-22 2 views
-3

Ich brauche Links und Bilder von HTML-Seiten mit c filtern ++ und regex und ich kam mit diesem Satz auf:Regex ignorieren HTML-Kommentare

<\s*(a.*?href|img.*?src)\s*=\s*\"(.*?)\".*?\s*> 

leider wird dies auch Links und Bilder innerhalb von Kommentaren finden, die es shouldn‘ t. Ich habe einige negative Ausblicke ohne Erfolg versucht.

+4

Bitte lesen Sie dies einmal: https://Stackoverflow.com/a/1732454/2815219 –

+0

Ich muss alle Links und Bilder von Websites für ein Webcrawler-Projekt für meine Universität extrahieren. <\ s * (a. *? Href | img. *? Src) \ s * = \ s * \ "(. *?) \". *? \ S *> extrahiert alle Links und Bilder, aber wir sollten nicht kommen diejenigen innerhalb der Kommentare. Zum Beispiel wird diese Regex finden die es sollte sowie -> was sollte es nicht – Doodle

+1

nicht verwenden Regex dafür. Verwenden Sie einen richtigen HTML-Parser. –

Antwort

0

Es gibt keinen Grund, alles auf einmal zu machen. Außerdem hast du nicht gesagt, welche Umgebung/Editor/Programmiersprache, so wählte ich mein Lieblings, C#.

  1. Entfernen Sie alle Kommentare:

mit

var s1 = source.Replace("<!--.*?-->", ""); 
  1. Extract Links mit Ihrer vorhandenen Regex:

mit

var s2 = Regex.Matches(s1, "<\\s*(a.*?href|img.*?src)\\s*=\\s*\"(.*?)\".*?\\s*> "); 
Verwandte Themen