正则表达式匹配字符串的问题

rebelboy 2008-05-16 07:09:39
<a href="任意字符" title="请点击左键!来源网址: http://www.hdvnet.com 请参照百度权利声明使用" onclick="return ow(event,this)" target="_blank">

想写个百度音乐的采集程序,但是正则不会写,问下如何才能准确匹配到href里面的内容
...全文
184 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
root_ 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 huaer1011 的回复:]
呵呵~
其实用正则表达式会影响整个效率的~
[/Quote]

效率是相对的

你用其它方式实现一下这种功能,就会明白其实用正则表达式会“影响”整个效率的~
huaer1011 2008-05-16
  • 打赏
  • 举报
回复
呵呵~
其实用正则表达式会影响整个效率的~
rebelboy 2008-05-16
  • 打赏
  • 举报
回复
可以了,无限感谢!!!!!!!!!!!!!!!111
root_ 2008-05-16
  • 打赏
  • 举报
回复
试一下

string test = @"<a href=""任意字符"" title=""请点击左键!来源网址: http://www.hdvnet.com 请参照百度权利声明使用"" onclick=""return ow(event,this)"" target=""_blank"">";
MatchCollection mc = Regex.Matches(test, @"<a\s[^>]*?href=([""']?)(?<url>[^""'\s]*)\1[^>]*?title=([""']?)请点击左键!来源网址:[^'""]*\2[^>]*>", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["url"].Value);
}


另外就是,因为不太清楚你的源字符串的特征,所以我这里做了一些额外的处理,比如href=后可以接“'”,“"”或直接接网址,如果可以保证href=后只会是双引号,title=后也是一样的话,正则可以简化一下,提高效率
string test = @"<a href=""任意字符"" title=""请点击左键!来源网址:    http://www.hdvnet.com       请参照百度权利声明使用"" onclick=""return   ow(event,this)"" target=""_blank"">";
MatchCollection mc = Regex.Matches(test, @"<a\s[^>]*?href=""(?<url>[^""]*)""[^>]*?title=""请点击左键!来源网址:[^""]*""[^>]*>", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["url"].Value);
}
rebelboy 2008-05-16
  • 打赏
  • 举报
回复
感谢各位的回答,root_ 能否再帮我改一下


因为html里面有很多超链接。
这个<a>标签里面有个title属性,用于区别这个超链接和其他的不同 ,title总是以 请点击左键!来源网址: 这几个字符开头的。同样还是取href里的地址
root_ 2008-05-16
  • 打赏
  • 举报
回复
string test = @"<a href=""任意字符"" title=""请点击左键!来源网址:    http://www.hdvnet.com       请参照百度权利声明使用"" onclick=""return   ow(event,this)"" target=""_blank"">";
MatchCollection mc = Regex.Matches(test, @"<a\s[^>]*?href=([""']?)(?<url>[^""'\s]*)\1[^>]*>", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["url"].Value);
}
林g 2008-05-16
  • 打赏
  • 举报
回复
学习!
qindel88 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qindel88 的回复:]
你可以参考一下这个帖子~里面的内容好像跟你的差不多~!~
[/Quote]
不好意思,没写地址了
http://topic.csdn.net/u/20080427/23/46bba1f7-bc3a-4af6-ae6b-481453947acf.html
rebelboy 2008-05-16
  • 打赏
  • 举报
回复
和2楼兄弟的差不多,就是用HttpWebRequest请求一个地址,然后匹配返回的字符串
我要取的字符串就是这样的
<html>
......
<a href= "任意字符 " title= "请点击左键!来源网址: http://www.hdvnet.com 请参照百度权利声明使用 " onclick= "return ow(event,this) " target= "_blank ">
......
</html>
里面的href引号内的内容
qindel88 2008-05-16
  • 打赏
  • 举报
回复
你可以参考一下这个帖子~里面的内容好像跟你的差不多~!~
ZUPENG0905 2008-05-16
  • 打赏
  • 举报
回复
不了解你说的怎么样 挂到百度上去,但是我做过同类的的程序,原理是获取资源的URL地址,利用HttpWebRequest得到该资源的页面内容,利用正则匹配,得到想要的关键字。
网上也有很多php的例子,下载试了一下,不能正常运行。
关于正则,可以一起探讨一下,匹配页面的正则,我还可以

111,125

社区成员

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

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

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