C#-将HTML无序列表转换为数组

C#-将HTML无序列表转换为数组,c#,html,regex,C#,Html,Regex,我的HTML字符串如下所示,存储在名为sourceCode <ul class="yom-list col first" style="width:33.333333333333%"> <li class="first"> <a href="/india/andaman-and-nicobar-islands/"> <span>Andaman and Nicobar Islands</span>

我的HTML字符串如下所示,存储在名为
sourceCode

    <ul class="yom-list col first" style="width:33.333333333333%">
    <li class="first">
      <a href="/india/andaman-and-nicobar-islands/">
        <span>Andaman and Nicobar Islands</span>
      </a>
    </li>
      <li>
      <a href="/india/jammu-and-kashmir/">
        <span>Jammu and Kashmir</span>
      </a>
    </li>
    <li class="last">
      <a href="/india/andhra-pradesh/">
        <span>Andhra Pradesh</span>
      </a>
    </li>
      <li>
      <a href="/india/jammu-and-kashmir/">
        <span>Jammu and Kashmir</span>
      </a>
    </li>

  </ul>
我想把它转换成一个通用列表 这样我就可以在我的代码中访问其中的数据,如href、name等。。 我试过这样的东西

            foreach (Match match in Regex.Matches(sourceCode, @"<li><a href=""(?<url>[^""])</a></li>"))
            items.Add(new Item()
            {

                name = match.Groups["span"].Value, // i don't know how to get value inside that span
                url = match.Groups["url"].Value,

            });
foreach(Regex.Matches(sourceCode,@“
  • ”)中的匹配) items.Add(新项() { name=match.Groups[“span”].Value,//我不知道如何在该范围内获取值 url=match.Groups[“url”]。值, });
    但它不起作用,可能正则表达式是错误的。谁能告诉我我做错了什么?
    注意:我不能在这个项目中使用HTMLAgilityPack

    尝试下面的正则表达式来获取

    之间的值如果您使用的是
    XHTML
    ,那么尝试使用XML解析器如何?@rhughes这只是一个字符串,我不能在我的C代码中添加这个正则表达式,可能语法是different@Athul请参阅我答案中的IDEONE链接。
    /<li>\s*<a href=\"(?<url>[^"]*)\">\s*<span>(?<span>[^<]*)<\/span>/m
    
    Regex rgx = new Regex(@"<li>\s*<a href=""(?<url>[^""]*)"">\s*<span>(?<span>[^<]*)</span>");
    foreach (Match m in rgx.Matches(input))
    {
    Console.WriteLine(m.Groups["url"].Value);
    Console.WriteLine(m.Groups["span"].Value);
    }