如何从href获得头衔?

时间:2016-07-24 18:28:16

标签: c# .net regex

我有这个标签结构:

<td class="team team-a "><a href="/teams/austria/sportverein-mattersburg/163/" title="Mattersburg">Mattersburg</a></td>

我正在尝试使用此正则表达式获取title属性:

return Regex.Replace(href, "<a[^>]*?title=\"([^\"]*?\"[^>]*?>", "");

其中href变量是内容<td>,似乎正则表达式失败了,为什么?

2 个答案:

答案 0 :(得分:2)

如果您想要替代方案,请查看HtmlAgilityPack:

var html = "<td class=\"team team-a\"><a href=\"/teams/austria/sportverein-mattersburg/163/\" title=\"Mattersburg\">Mattersburg</a></td>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var node = doc.DocumentNode.SelectNodes("//a") [0];
Console.WriteLine(node.Attributes["Title"].Value);

当然RegEx应该更快。但根据我的经验,HtmlAgilityPack更易于使用,并且在涉及不规则和无效的HTML时更加宽容。

答案 1 :(得分:1)

您有语法错误,但这不是主要问题。当您要替换时,除了标题之外,您应该删除。所以你应该删除标题本身之前和之后的所有内容。例如,

return Regex.Replace(href, ".*title=\"|\".*", "");

不太具体的解决方案,如果有其他标签带有title属性,并且您只需要<a>的标题:

.*<a[^>]*?title=\"|\".*