2012-08-23 7 views
5

Ich habe eine Anwendung, die das Quell-HTML liest und alle Anhänge einer E-Mail herunterlädt. Dies funktioniert gut, mit Ausnahme der Tatsache, dass Microsoft Outlook einigen seltsamen Quellenwert hat, zum Beispiel ...Ersetzen Sie die MS Outlook-HTML-Quellzeichenfolge mit Regex?

<img width="163" height="39" id="Picture_x0020_1" src="cid:[email protected]" alt="Description: Description: Description: cid:[email protected]">

Erstens würde Ich mag es nur Anhänge ändern \ image001.png als Quelle. Außerdem sollte die Alternative nur image001.png sein, nicht diese lange, seltsame Alternative. Ich bin mir nicht sicher, wie ich das anstellen soll.

+2

[Regex nicht verwenden, um HTML zu analysieren] (http://stackoverflow.com/a/1732454/26226). – jrummell

+0

Ich denke, der Titel war in Ordnung, ich möchte nur darauf hinweisen, dass Regex beim Parsen von HTML normalerweise sehr unzuverlässig ist. – jrummell

+1

Wenn Sie sicher sind, dass der 'text' das' self pattern', 'same format' hat und sich ** NIEMALS ** ändert, ** SOLLTEN ** Sie' REGEX' then..Das ist unwahrscheinlich mit HTML-Dateien aber ich denke "REGEX" wäre hier eine gute Option ... – Anirudha

Antwort

2

Sie sollten Regex verwenden (ich die Tags in Ihrer Frage aktualisiert, um dies zu reflektieren):

Regex.Replace(text, @"src=""cid:(?<FileName>[^@]+)@[^""]*""", @"src=""Attachments\${FileName}""", 
    RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); 
Regex.Replace(x, @"alt=""[^.]*cid:(?<FileName>[^@]+)@[^""]*""", @"alt=""${FileName}""", 
    RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); 

Ich bin sicher, dass es effizientere Wege, dies zu tun, aber das ist, was ich tun konnte.