取页面中的一段字符串 正策筛选

小城山 2013-05-13 09:52:37
MatchCollection mc = Regex.Matches(Search_Html_DanPin, @"(?is)(?<=class=""Pic""\s\W*\shref="").*?(?=product_id=)");
//Search_Html_DanPin 是获取的一个网页内容
// @"(?is)(?<=class=""Pic""\s\W*\shref="").*?(?=product_id=)") 是筛选的正侧表达式

// 比如 页面中的一段:class="pic" href="http://product.dangdang.com/product.aspx //product_id=22832334#ddclick //act=click&pos=22832334_16_1_q&cat=&key=9787538460131&qinfo=21_1_48&pinfo=&minfo=&ninfo=&custid//=&permid=20130510161738906174469583512667327&ref=&rcount=&type=&t=1368342485000" //target="_blank"

//要取product_id的值 下面的代码只取到了符合规则的数量 但是没取到值 请教如何写(正策我刚接触)

string[] res = new string[mc.Count];
for (int i = 0; i < res.Length; i++)
{
res[i] = "";
}
for (int i = 0; i < mc.Count; i++)
{
res[i] = mc[i].Value.ToString();
}
return res;
...全文
228 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
EnForGrass 2013-05-13
(?is)(?<=class="pic"\s\W*\shref=").*?product_id=(\d+)(?=#)

   string[] res = new string[mc.Count];
            for (int i = 0; i < res.Length; i++)
            {
                res[i] = "";
            }
            for (int i = 0; i < mc.Count; i++)
            {
                res[i] = mc[i].Groups[1].Value.ToString();
            }
            return res;
回复
小城山 2013-05-13
res[i] = mc[i].Value.ToString(); mc[i].Value都是 http://product.dangdang.com/product.aspx? 取错了值
回复
小城山 2013-05-13
只要也至少要匹配class="pic" href="http://product.dangdang.com/product.aspx //product_id=
回复
小城山 2013-05-13
必须要筛选 class="pic" 因为 页面中有很多这种结构的字符串 可能会取到不需要的字段
回复
bdmh 2013-05-13
@"(?is)(?<=product_id=)[\d]+(?=#)";
回复
相关推荐
发帖
.NET Framework
创建于2007-09-28

1.7w+

社区成员

.NET技术 .NET Framework
申请成为版主
帖子事件
创建了帖子
2013-05-13 09:52
社区公告
暂无公告