C#-将HTML无序列表转换为数组
我的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>
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);
}