我有这个标签结构:
<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>
,似乎正则表达式失败了,为什么?
答案 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=\"|\".*