2016-02-11 23 views
0

我解析html(以c#代碼作爲字符串)並需要從html中獲取所有短語。例如HTML:需要正則表達式來查找html中的所有短語

<div><div>text1</div>text2</div> 

我想要得到的字符串數組:

文本1
文本2

如果正則表達式是不可能的,請提供算法如何跳過所有的標籤名,標記屬性並僅獲取文本內容。

更新:它不是一個span問題的dublicate,因爲文本可以在任何標籤中,而不僅僅是span。我需要所有文字,除了標籤和屬性。不想使用HtmlAgility分析器。

UPDATE2:發現正則表達式(是的,它可能)

//parse html, save text node in list 
    public void FindTextHtml(string html, List<string> list) 
    { 
     var ms = Regex.Matches(html, @">([^<>]*)<", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
     foreach (Match m in ms) 
     { 
      var text = m.Groups[1].Value; 
      list.Add(text); 
     } 
    } 

完整的源代碼可以here

+1

什麼聽起來像是[XY問題](http://meta.stackexchange.com/q/66377/158761)? –

+2

你正在試圖用螺絲刀錘上釘子。如果您需要解析HTML,請使用HTML解析器。 – JJJ

+0

我認爲這是非常簡單的問題,大多數開發人員知道如何解決它。我可以自己解決,但要節省我的時間。感謝您的理解。 –

回答

2

是什麼你正在尋找在這裏:你正在尋找Grabbing HTML Tags

比賽會在......(。*?)...組中。希望這有助於

2

使用HtmlAgilityPack DLL通過XML和HTML文件進行解析,然後用下面的代碼,讓您的文字:

 string path = @"path to the file"; 
     HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument(); 
     hd.Load(path); 
     string result= hd.DocumentNode.InnerText.Trim(); 

這是所有你需要

+1

好方法,我用它,如果找不到正則表達式。不想將添加庫添加到我的項目中。 –

+0

只需將HtmlAgilityPck dll添加到您的參考文獻 – ako

+1

請在原始問題中查看我的答案。或許,'返回HtmlAgilityPack.HtmlEntity.DeEntitize(doc.DocumentNode.InnerText.Trim());'對於當前場景更好。 –

相關問題