songberxiang 2015-06-03 02:20:14
一个标签类似:<a href=\"play.html?c=frocalxod9b740yx\" title=\"活动\">
获取a标签中href的值表达式为:
Regex reg = new Regex(@"(?is)<a[^>]+?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
现在希望获取title的值,修改为如下,但是无法匹配,请大神帮忙看看有什么错误:
Regex reg = new Regex(@"(?is)<a[^>]+?href=(['""]?)(?<url>[^'""\s>]+).*?title=""(.*?)""\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
...全文
5815 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我叫小菜菜 2015-06-04
  • 打赏
  • 举报
回复
不熟悉正则的话,可以考虑以下组合: XPath+HtmlPaster.Net
xuzuning 2015-06-03
  • 打赏
  • 举报
回复

string text = @"<a href=""play.html?c=frocalxod9b740yx"" title=""活动"">";
string patten = @"(href|title)=""([^""]*)";
Regex.Matches(text, patten).Cast<Match>().ToList().ForEach(x =>
{
Console.WriteLine(string.Format("{0}: {1}", x.Groups[1].Value, x.Groups[2].Value));
});
  • 打赏
  • 举报
回复
string html = @"<a href=""play.html?c=frocalxod9b740yx""  title=""活动"">";
            string patten = @"<a\s+.*?href=""([^""]*)""\s+.*?title=""([^""]*)"".*?>";
            Regex.Matches(html, patten).Cast<Match>().ToList().ForEach(x=>
                {
                    Console.WriteLine(string.Format("href:{0}  title:{1}", x.Groups[1].Value, x.Groups[2].Value));
                });
smthgdin_020 2015-06-03
  • 打赏
  • 举报
回复
<a 和 title 之间就不需要那么复杂的匹配了。
  • 打赏
  • 举报
回复
比如说 title="活动" 这里边在=号前边有个空格,你就没有考虑到吧?! 正规的html分析不用正则,应该用正规的html语法分析框架程序。 正则只是做点随便瞎”玩儿“的业余小练习还行,真正的抓取操作,面对的结构多变、目标网页可能随时更新版本,不能用什么正则来作为工具。
  • 打赏
  • 举报
回复
你最起码应该先要举出1、2个更准确的测试用例,例如 <a HREF=\"play.html?c=frocalxod9b740yx&title=mms\" data-bind=\"xyz\" title=\"活动\"> 这样的也必须准确找到。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧