gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:54:37 25 4
gpt4 key购买 nike

我的 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、名称等。我试过这样的事情

            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,

});

但它不起作用,可能正则表达式是错误的。谁能告诉我我做错了什么?注意:我不能在这个项目中使用HTMLAgilityPack

最佳答案

尝试使用下面的正则表达式来获取 <a href> 之间的值标记和 <span>仅当它存在于 <li> 中时才标记标签。

/<li>\s*<a href=\"(?<url>[^"]*)\">\s*<span>(?<span>[^<]*)<\/span>/m

DEMO

你的 c#代码将是,

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

IDEONE

关于C# - 将 HTML 无序列表转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com