2016-04-11 8 views
0
私は私だけのために

正規表現は、HTMLタグを除いて、すべてを合わせて

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

このパターのdoesntの仕事の間に立つABCまたは何か他のものと一致するようにしたい

<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>)) 

はあなたを行いますが何か考えている? Thx for help

+8

HTMLを解析するために正規表現を使用しないでください。 HTMLは通常の言語ではありません。代わりにHTMLAgilityPackのようなものを使用してください。 – Amy

+1

義務的なHTML解析リンク。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Jeremy

+0

@Jeremy:それはOPがその質問に触発されたように感じます。選ばれた。 – BoltClock

答えて

0

Amyによると、HTMLを解析するためにregexを使用しないでください。 NuGetからHtml Agility Packをインストールし、それを解析するためにSystem.Linq Namespaceを使用することができます。例えば

ここ:

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; 
    } 
} 

結果はそうである:

enter image description here

+0

この回答はOKです –

関連する問題