来自文本的正则表达式特定标签?

时间:2012-04-11 09:26:02

标签: c# regex string-matching

我有以下文字

<fieldset>
 <ul id="ContentPlaceHolder2_1g" class="profList column ui-sortable">
<legend class="group">المجموعه 1</legend>
<li id="ContentPlaceHolder2_8">محمود حسن ابراهيم عبد الصمد</li>
 /ul></fieldset>
  <fieldset>
 <ul id="ContentPlaceHolder2_2g" class="profList column ui-sortable">
 <legend class="group">المجموعه 2</legend>
 <li id="ContentPlaceHolder2_9">محمود فتحى ابراهيم عبد الصمد</li>
  <li id="ContentPlaceHolder2_10">احمد محسن احمد على</li>
   <li class="" style="" id="ContentPlaceHolder2_3">احمد درويش محمود عباس</li>
 </ul>
 </fieldset>

 <fieldset>
  <ul id="ContentPlaceHolder2_3g" class="profList column ui-sortable">
   <legend class="group">المجموعه 3</legend>
 <li id="ContentPlaceHolder2_11">محمد سيد محمد سيد</li>
  </ul>

 </fieldset>

我想循环遍历它以获取每个ul标签和il里面的所有elemet in ul标签和数组中的每个ul标签

2 个答案:

答案 0 :(得分:2)

使用RegEx解析html是个坏主意。也许你应该考虑DOM解析器,例如Html Agility Pack

答案 1 :(得分:1)

使用HtmlAgilityPack

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var list = doc.DocumentNode.Descendants("ul")
    .Select(n => n.Descendants("li").Select(li => new {id=li.Id,text=li.InnerText }).ToList())
    .ToList();

foreach (var ul in list)
{
    foreach(var li in ul)
    {
        Console.WriteLine(li.id + " " +  li.text);
    }
    Console.WriteLine();
}