2011-01-17 20 views
0

Ich habe zwei reguläre Rexpressions, die ich in der für Performance-Spiele kombinieren möchte, aber nicht sicher, wie zu erreichen. Der erste Ausdruck findet alle Bilder in html, der zweite findet alle Eingabeknöpfe vom Typ image.kombinieren regulären Ausdruck

  1. Regex.Matches(html, @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
  2. Regex.Matches(html, @"<input[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);

Wie ich diese kombinieren könnten?

+0

Regex für HTML-Parsing ist nicht gut. – Rozuur

Antwort

0

Die Art, wie Sie es geschrieben haben, ist ein wenig mehrdeutig ... aber von dem, was ich Ihnen sagen kann, wollen Sie eine Liste, die sowohl Bilder als auch Eingabetasten des Typs Bild enthält. (Nicht sicher, was u durch die Eingabe-Taste vom Typ Bild bedeuten

so können Sie Klammern und ein oder zwischen

dh .. (regex1 |? Regex2)

je nachdem, wie spezifisch den Inhalt der Tags ist auch so etwas wie

<(?:img|input)[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?> 
+0

Besser machen: '(regex1) | (regex2)' – leppie

1

Sie mit html Agility Pack-hTML-Dokumente haben könnte fastly und richtig in Betracht ziehen sollten analysieren:

http://htmlagilitypack.codeplex.com/

+0

Ja, ich würde lieber mit diesem gehen, aber aufgrund der Lizenzbeschränkungen kann ich nicht. – amateur

+0

@Niall: Seine Ms öffentliche Lizenz unterscheidet sich nicht wesentlich von GNU, so dass Sie sie verwenden und weiterverbreiten können. Sie können Details hier überprüfen: http://stackoverflow.com/questions/1424307/how-does-ms-pl-license-work – honibis