簡體   English   中英

正則表達式可匹配所有內容,HTML標記除外

[英]Regular expression to match everything, except HTML tags

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

我只想匹配ABC或介於兩者之間的任何其他內容

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

此模式對我不起作用:

((?!<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>))

你有什么主意嗎? 尋求幫助

正如Amy所說,請勿使用正則表達式來解析HTML。 您可以從NuGet安裝Html Agility Pack並使用System.Linq命名空間進行解析。

例如這里:

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

結果是這樣的:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM