请教简单正则表达式

snowbirdfly 2009-05-19 02:38:58

<li>
<h4><a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm'>LEVIS 夏款个性印花短袖T恤 M号咖啡色</a></h4>
<div class="item">
<div class="pic">
<a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm'>
<img src="http://img05.taobaocdn.com/bao/uploaded/i5/T1N2phXoEa.0JDtMIT_011723.jpg_160x160.jpg" />
</a>
</div>


<div class="desc">
<a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm' class="permalink"> LEVIS 夏款个性印花短袖T恤 M号咖啡色 </a>
</div>
<div class="price">
<span>一口价</span><strong>45.00元</strong>
</div>
<div class="remain-date">剩余 6天</div>
</div>
</li>
<li>
<h4><a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-6e41151338a1d0e920a7c71ee7ca2042.htm'>Levis 可爱公仔BE@RBRICK熊暴力熊 联名T恤 019黑色XL号</a></h4>
<div class="item">
<div class="pic">
<a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-6e41151338a1d0e920a7c71ee7ca2042.htm'>
<img src="http://img06.taobaocdn.com/bao/uploaded/i6/T1wvthXkrV.0K3gLw._112210.jpg_160x160.jpg" />
</a>
</div>


<div class="desc">
<a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-6e41151338a1d0e920a7c71ee7ca2042.htm' class="permalink"> Levis 可爱公仔BE@RBRICK熊暴力熊 联名T恤 019黑色XL号 </a>
</div>
<div class="price">
<span>一口价</span><strong>40.00元</strong>
</div>
<div class="remain-date">剩余 6天</div>
</div>
</li>

如何从这段string中,利用Regex来获得:
http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm
http://img05.taobaocdn.com/bao/uploaded/i5/T1N2phXoEa.0JDtMIT_011723.jpg_160x160.jpg
LEVIS 夏款个性印花短袖T恤 M号咖啡色
一口价
45.00元
剩余 6天
http://item.taobao.com/auction/item_detail-0db1-6e41151338a1d0e920a7c71ee7ca2042.htm
http://img06.taobaocdn.com/bao/uploaded/i6/T1wvthXkrV.0K3gLw._112210.jpg_160x160.jpg
Levis 可爱公仔BE@RBRICK熊暴力熊 联名T恤 019黑色XL号
一口价
40.00元
剩余 6天
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿牛138588 2009-05-19
  • 打赏
  • 举报
回复
第一个地址:
(?<=<h4>.*?href=').*?(?='>)
(LEVIS 夏款个性印花短袖T恤 M号咖啡色)说明:
(?<=<h4>.*?'>).*?(?=\<)
图片地址:
(?<=<h4>.*?<img src=").*?(?=")
一口价:
(?<=<span>一口价</span><strong>).*?(?=\<)
snowbirdfly 2009-05-19
  • 打赏
  • 举报
回复
继续请教~~~
wackyboy 2009-05-19
  • 打赏
  • 举报
回复

这样的正则要是写起来太长了,差不多吧HTML写了一遍
snowbirdfly 2009-05-19
  • 打赏
  • 举报
回复
恩,但是这个也有问题了~~~
string s = "..";
Regex re = new Regex(@"<a[^>]*href=(""(?<href>[^""]*)""|'(?<href>[^']*)'|(?<href>[^\s>]*))[^>]*>(?<text>.*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = re.Match(s);
while(m.Success)
{
string link = m.Groups["href"].Value;
string text = Regex.Replace(m.Groups["text"].Value,"<[^>]*>","");
Console.WriteLine("link:{0}\ntext:{1}", link, text);
m = m.NextMatch();
}
那么解析出来的:
link多了很多,text有时候为空,具体原因是:
h4><a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm'>LEVIS 夏款个性印花短袖T恤 M号咖啡色</a></h4>
<div class="item">
<div class="pic">
<a target="_blank" href='http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm'>
这样首先解析出http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm
LEVIS 夏款个性印花短袖T恤 M号咖啡色
http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm
(空)
HDNGO 2009-05-19
  • 打赏
  • 举报
回复
<div class=""remain-date"">(.*?)</div>


剩余天数的
guduhuanghun520 2009-05-19
  • 打赏
  • 举报
回复
<img[^>]*src=(""(?<src>[^""]*)""|'(?<src>[^']*)'|(?<src>[^\s>]*))[^>]*>
HDNGO 2009-05-19
  • 打赏
  • 举报
回复
<strong>(.*?)</strong>


价格的
HDNGO 2009-05-19
  • 打赏
  • 举报
回复
<span>.*?</span>


一口价的
HDNGO 2009-05-19
  • 打赏
  • 举报
回复
<img[^>]*src=(""(?<src>[^""]*)""|'(?<src>[^']*)'|(?<src>[^\s>]*))[^>]*>


图片的
snowbirdfly 2009-05-19
  • 打赏
  • 举报
回复
恩,感谢楼上大哥的回复~~
我测试了一下,
LEVIS 夏款个性印花短袖T恤 M号咖啡色
http://item.taobao.com/auction/item_detail-0db1-c010d1d1e4bd4480741f6e84e41e6abe.htm
这两个数据我获取到了
麻烦再把另外几个数据提取一下啊,谢谢~~~
马上结贴~~~
HDNGO 2009-05-19
  • 打赏
  • 举报
回复
string s = "..";   
Regex re = new Regex(@"<a[^>]*href=(""(?<href>[^""]*)""|'(?<href>[^']*)'|(?<href>[^\s>]*))[^>]*>(?<text>.*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = re.Match(s);
if(m.Success)
{
string link = m.Groups["href"].Value;
string text = Regex.Replace(m.Groups["text"].Value,"<[^>]*>","");
Console.WriteLine("link:{0}\ntext:{1}", link, text);
}


a标签的文字和地址

110,499

社区成员

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

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

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