C#, wyrażenia regularne, wyciąganie danych ze znaczników


(Sumek) #1

Witam,

Przy pisaniu programu napotkałem problem ze znacznikami. Fragment kodu wygląda tak:

jakies danedrugie jakies danetrzecie jakies dane

Mój problem polega na tym, że przy napisaniu wyrażenie regularnego

@"(?\w+)

wypisuje mi cała linie od pierwszego

do ostatniego , a nie wnętrze .

Dane między znacznikami mogą być różne, a chciałbym pojedynczo je wyciągać, a nie całą linią. Jak można to zrobić?


(Drobok) #2
? zachłanny

?? leniwy

Chyba o to ci chodziło :slight_smile:


(Blapiter) #3

Do zabawy z HTMLem polecam: HtmlAgilityPack=>http://olussier.net/2010/03/30/easily-parse-html-documents-in-csharp/

Generalnie można poruszać się prawie tak swobodnie jak w javescript DOM.


(Tomek Matz) #4

Po co zadajesz pytanie na tym forum skoro i tak nie interesuje Cię odpowiedź?

http://forum.dobreprogramy.pl/regex-zmiana-wyrazenia-matchcollections-t471916.html


(Sumek) #5

drobok , przy dwóch znakach ? wywala mi błąd, a przy jednym robi to zachłannie.

-- Dodane 28.01.2012 (So) 15:35 --

matzu , interesuje odpowiedź tyle, że tego HtmlAgilityPack nie mogę użyć, mam napisać sam taki.


(Tomek Matz) #6

Wyrażenia regularne nie nadają się do parsowania kodu HTML, bo może on zawierać błędy (poza tym jest jeszcze kwestia wydajności takiego podejścia).

(?.*?)

BTW do testowania wyrażeń regularnych polecam bardzo fajny programik http://www.radsoftware.com.au/regexdesigner/.


(Sumek) #7

A co byś polecał do parsowania kody HTML?


(Tomek Matz) #8

Heh ... No przecież w moim przedostatnim poście podałem link do tematu, w którym już udzieliłem odpowiedzi na to pytanie (w tamtym temacie podałem też link do bardzo ciekawej dyskusji dotyczącej parsowania HTML). Z mojej strony EOT (chyba, że będziesz miał jakiś problem z wyrażeniem regularnym, które podałem przed chwilą).


(Sumek) #9

Dziękuję za pomoc:)