2017-03-14 4 views
0

Ich habe ein paar Probleme mit dem Verständnis der Regex-Muster-Syntax. Ich verwende Outlook interop, um durch die HTMLbody einer email.msg zu gehen.Regex-Muster zum Finden von HTML-Bild-Tag mit src zum Internet

Ich möchte alle Bilder entfernen, die einen Verweis auf das Internet hat. Also benutze ich Regex.Replace, um alle Bild-Tags zu finden und sie durch Text zu ersetzen.

Dies ist, was ich habe:

string altText = " <i>*Reference to picture on the internet removed*</i> "; string b = Regex.Replace(a, @"(<img([^>]+)>)", altText);

Dies funktioniert, aber ich möchte die Tags finden, die nur src aus dem Internet haben. Das fand ich in meiner Google-Suche:

string matchString = Regex.Match(a, "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value; 

Aber es wird nicht helfen, da es sieht aus wie alle Bilder haben einen src-Tag. Mein Ziel ist es, wenn möglich eine Muster-Syntax in Regex zu schreiben, wo ich überprüfe, ob die Quelle (src) mit http, https oder www beginnt.

Gibt es jemanden, der mir dabei helfen kann?

+0

[Html Agility-Pack] (https://htmlagilitypack.codeplex.com/) erlauben würde, Sie behandeln die Aufgabe einfacher. –

Antwort

1

Ich würde vorschlagen, einen HTML-Parser zu verwenden, um Ihr Bilder-Tag statt einer Regex direkt zu finden. Sie können dann eine Regex verwenden, um das src-Attribut bei Bedarf zu überprüfen.

In der Zwischenzeit glaube ich, die folgende regex die Ergebnisse produzieren Sie erwarten:

<img.+?src=[\"']((?:https?|www).*)[\"'].*?> 

Regex Hüllen: Regex

bearbeiten Es ist auch, dass manchmal Links zu beachten, kann nur durch // starten. Die folgende regex sollte es tun:

<img.+?src=[\"']((?:https?|www|//).*)[\"'].*?> 

Für eine ausführlichere Regex Lösung passende URL finden Sie What is a good regular expression to match a URL?

+0

Welchen HTML-Parser empfehlen Sie? –

+1

Html Agility Pack ist, was ich normalerweise verwende: https://www.nuget.org/packages/HtmlAgilityPack/ – StfBln

+0

Vielen Dank! Genau das habe ich gesucht. Ich werde auch HTML-Parser auschecken. – Andreas

Verwandte Themen