2016-04-11 17 views
0
Ben sadece benim için

Düzenli ifade HTML etiketleri hariç herşeyi maç için

<td> 
</td> (before and after ABC) 

Bu Patter çalışmıyor arasında duran ABC veya başka bir şey eşleştirmek istediğiniz

<tr><td>Di, 12.04.16</td><td>1</td><td>D</td><td>D</td><td>255</td><td>ABC</td><tr> 

:

((?!<tr><td>[D-M][i-r],[' ][0-3][0-9]\\.[0-1][0-9]\\.[0-9][0-9]</td><td>[1-9][0-2]?</td><td>[A-Z]?[A-Z]?[A-Z]?[A-Z]?[1-5]?</td><td>(---|[A-Z]?[A-Z]?[A-Z]?[A-Z]?[1-5]?)</td><td>).*(?!</td></tr>)) 

mi bir fikrin var mı? Yardım için Thx

+8

HTML ayrıştırmak için normal ifadeler kullanabilirsiniz etmeyiniz. HTML normal bir dil değildir. Bunun yerine HTMLAgilityPack gibi bir şey kullanın. – Amy

+1

zorunlu HTML ayrıştırma bağlantısı. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Jeremy

+0

@Jeremy: Neredeyse OP'nin bu sorudan ilham aldığı gibi, seçilmiş. – BoltClock

cevap

0

Amy'in dediği gibi, HTML'yi ayrıştırmak için normal ifadeyi kullanmayın. NuGet'ten Html Agility Pack yükleyebilir ve ayrıştırmak için System.Linq Namespace'u kullanabilirsiniz. Burada Örneğin

:

string html = "<html><head></head><body><p class='testclass'>This is a paragraph.</p><table><tr><td>Di, 12.04.16</td><td>1</td><td>D</td><td>D</td><td>255</td><td>ABC</td><tr></table></body></html>"; 
HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(html); 
var programmes = doc.DocumentNode.Descendants().Where(d => d.GetAttributeValue("class", "") == "testclass"); 
var trs = doc.DocumentNode.Descendants("tr"); // Give you all the trs 
foreach (var tr in trs) 
{ 
    var tds = tr.Descendants("td").ToArray(); // Get all the tds 
    //Sample, show the result in a TextBlock 
    foreach (var td in tds) 
    { 
     txt.Text = txt.Text + " " + td.InnerText; 
    } 
} 

sonuç böyledir:

enter image description here

+0

Tamam, bu cevap için teşekkürler –