Behöver hjälp med RegEx i C#

Permalänk
Medlem

Behöver hjälp med RegEx i C#

Jag änvänder WebClient i C# för att hämta en websida till en sträng. Jag vill kunna göra följande med RegEx:

Jag vill extrahera all text mellan <font face="Arial"> och </font><br> om Beräknas och 7581 finns mellan ovan sagda start och stopp. Strängen som jag ska extrahera ifrån ser ut som:

-------------------<br>
<font face="Arial">07:46 till Hallsberg<br>
Tåg nr <a href="/TRAFIK/(r4txvq551iutle55rohjvp55)/WapPages/TrainShow.aspx?JF=-1&train=20100308,7581">7581</a><br>
Beräknas 08:27<br>
Spår 1</font><br>
-------------------<br>
<font face="Arial">08:25 till Lidköping<br>
Tåg nr <a href="/TRAFIK/(r4txvq551iutle55rohjvp55)/WapPages/TrainShow.aspx?JF=-1&train=20100308,13347">13347</a><br>
Spår 1</font><br>
-------------------<br>

Är helt ny på RegEx så jag har inte en aning om hur man gör.

Visa signatur

Vem har bajsat i min termos?

Permalänk

Denna koden gör ganska exakt det du vill. Regexet är inte det snyggaste men det funkar iaf.

Regex scraper = new Regex(@<font \s face="Arial"">(?<Departure>[^<]*)<br>[^<]*<a \s href=""/TRAFIK/[^>]*>(?<TrainID>\d{4,5})</a><br>\r?\n?(?<ETA>[^<]*)<br>\r?\n?(?<Track>[^<]*)", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); List<Match> matches = scraper.Matches(input).Cast<Match>().Where(c=>c.Groups["TrainID"].Value == "7581").ToList(); foreach (Match match in matches) { Console.WriteLine("Tåg {0} avgår {1} från {2}. Ankomst {3}", match.Groups["TrainID"].Value, match.Groups["Departure"].Value, match.Groups["Track"].Value.ToLower(), match.Groups["ETA"].Value.ToLower()); }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Normalt sätt är det inte att rekommendera att scrapea/parsa HTML med reguljära uttryck, men i det här fallet så går det, eftersom det är så simpelt. Men för framtiden så kan det vara värt att notera att det för det mesta är bäst att använda ett HTML bibliotek för att läsa HTML (jag antar att det kommer ett antal sådana med .Net så det bör inte vara något problem).

Permalänk
Medlem

Tack o bock. Testar imorgon.

Visa signatur

Vem har bajsat i min termos?