正则表达式提取字符串的超链接提取!急

正则表达式如何匹配链接内的文本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Sponsored by
国内领先的实时后端云野狗 API 可用于开发即时聊天、网络游戏、实时定位等实时场景传输快!响应快!入门快!
Promoted by
正则表达式如何匹配链接内的文本
15:54:20 +08:00 · 1252 次点击
&a href="ss.html"&xxxx&/a&如何找到xxxx
9 回复 &| &直到
08:00:00 +08:00
& & 16:12:44 +08:00
‘&a href=&ss.html&&(.*?)&/a&’
& & 16:13:58 +08:00
因为不知道你要求的「xxxx」是什么内容,暂且理解为字母或数字或下划线或汉字。
那么,正则表达式则为:&a href=&ss.html&&\w+&/a&
测试正则表达式。
& & 16:14:41 +08:00
为什么一定要正则呢,不能用 dom 解析吗?
& & 16:15:22 +08:00
&a href=&这里不确定的&&xxxx&/a&
@
& & 16:20:07 +08:00
@ 如果你还有其他的匹配要求,请先给「感谢」,这是基本礼仪。
& & 17:01:10 +08:00
&a href=&.+\.html&&\w*&\/a&
& & 17:10:50 +08:00
看见一楼回复乐了,简单暴力
& & 17:22:16 +08:00
1.要求:
1)匹配 &a href=&ss.html&&xxxx&/a& 中的 xxxx。
2)需要匹配的字符,为4个。其中包括字母或数字或下划线,但不包括中文。
结果:&a href=&ss.html&&\w{4}&/a&
2.要求:
1)匹配 &a href=&ss.html&&xxxx&/a& 中的 ss
2)需要匹配的字符,为1个或更多。其中包括字母或数字或下划线,但不包括中文。
结果:&a href=&\w+.html&&xxxx&/a&
3.要求:
1)匹配 &a href=&ss.html&&xxxx&/a& 中的 ss
2)需要匹配的字符,为1个或更多。其中包括字母或数字或下划线或中文。
结果:&a href=&.+.html&&xxxx&/a&
& & 17:19:40 +08:00
@ 不确定去掉就好了。&&a href=\&(?:.*?)\&&(.*?)&/a&&
& · & 507 人在线 & 最高记录 1893 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.3 · 54ms · UTC 01:25 · PVG 09:25 · LAX 18:25 · JFK 21:25? Do have faith in what you're doing.写出正则表达式,从一个字符串中提取链接地址。比如下面字符串中
&IT面试题博客中包含很多  &a href=& 微软面试题 &/a& &
则需要提取的地址为 &
在python中:
p = re.compile('&a(?: [^&]*)+href=([^ &]*)(?: [^&]*)*&')
content = &IT面试题博客中包含很多 &a href=/mianshiti/blog/category/微软面试题& 微软面试题 &/a& &
p.search(content).groups()
这段代码对于给出的例子是足够了,但实际情况中还需要考虑链接地址两边的单引号或者双引号,href的大小写,情况会稍微复杂些。
另外,如果面试者对正则表达式完全没有概念,可以和面试官申请换一道题,一般不会有太大影响。
参考资料:
http://wiki./Python正则表达式操作指南
阅读(...) 评论()php 正则表达式提取网页超级链接url的函数
php 正则表达式提取网页超级链接url的函数
  复制代码 代码如下:  function match_links($document) { preg_match_all("'&\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\&]+))[^&]*&?(.*?)&/a&'isx",$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $match['link'][] = $ } while(list($key,$val) = each($links[3])) { if(!empty($val)) $match['link'][] = $ } while(list($key,$val) = each($links[4])) { if(!empty($val)) $match['content'][] = $ } while(list($key,$val) = each($links[0])) { if(!empty($val)) $match['all'][] = $ } return $ }主要是正则的问题,下面给出个下的,多测试正则获取页面的链接正则   复制代码 代码如下:  public string GetHref(string HtmlCode) { string MatchVale = ""; string Reg = @"(h|H)(r|R)(e|E)(f|F) *= *('|"")?((\w|\\|\/|\.|:|-|_)+)('|""| *|&)?"; foreach (Match m in Regex.Matches(HtmlCode, Reg)) { MatchVale += (m.Value).ToLower().Replace(", "").Trim() + "||"; } return MatchV }
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&——一切伟大的行动和思想,都有一个微不足道的开始。
一般在做爬虫或者CMS的时候经常需要提取 href链接或者是src地址。此时可以使用正则表达式轻松完成。Regex
Regex(@"(?is)&a[^&]*?href=(['""]?)(?&url&[^'""\s&]+)\1[^&]*&(?&text&(?:(?!&/?a\b).)*)&/a&");&&&&&&&&&&&&
MatchCollection mc = reg.Matches(yourStr);&&&&&&&&&&&& foreach (Match m in mc)&&&&&&&&&&& &{&&&&&&&&&&&&&&&& &&richTextBox2.Text += m.Groups["url"].Value + "\n";//得到href值&&&&&&&&&&&&&&&& &&richTextBox2.Text += m.Groups["text"].Value + "\n";//得到&a&&a/&中间的内容&&&&&&&&&& &&& } &方法2: &&PRE class="brush: c-"&R&&&&&&& &M&&&&&&&&& &r = new Regex("href\\s*=\\s*(?:\"(?&1&[^\"]*)\"|(?&1&\\S+))",&&&&&&&&&&& &RegexOptions.piled);&&&&&&& for (m = r.Match(inputString); m.S m = m.NextMatch())&&&&&&&& {&&&&&&&&&&&& &Console.WriteLine("Found href " + m.Groups[1] + " at " + m.Groups[1].Index);}&/PRE&
方法3:提取img src的 &&PRE
class="brush: c-"&Regex reg = new
Regex(@"(?i)&img[^&]*?\ssrc\s*=\s*(['""]?)(?&src&[^'""\s&]+)\1[^&]*&");&&
&MatchCollection mc = reg.Matches(yourStr);&& &foreach (Match m in mc)&&& &{&&& Console.Write(m.Groups["src"].Value + "\n");&& &}&&/PRE&
&方法4:&提取img src & &PRE class="brush: c-"&& /// &summary&&&&&&&&& & /// 获取Img的路径&&&&&&&& & /// &/summary&&&&&&&&& & /// &param name="htmlText"&Html字符串文本&/param&&&&&&&& & /// &returns&以数组形式返回图片路径&/returns&&&&&&&& &&& public static string[] GetHtmlImageUrlList(string htmlText)&&&&&& &&{&&&&&&&&& &&&Regex
regImg = new
Regex(@"&img\b[^&&]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?&imgUrl&[^\s\t\r\n""'&&]*)[^&&]*?/?[\s\t\r\n]*&",
RegexOptions.IgnoreCase); &&&//新建一个matches的MatchCollection对象 保存 匹配对象个数(img标签) &&&MatchCollection matches = regImg.Matches(htmlText);&&&int i = 0;&&&&&&&&&&& &&&string[] sUrlList = new string[matches.Count]; &&&//遍历所有的img标签对象&&&&&&&&&&& &&&foreach (Match match in matches) &&&&{&&&&&&&&&&&&&&&& &&&&//获取所有Img的路径src,并保存到数组中 &&&&sUrlList[i++] = match.Groups["imgUrl"].V&&&&&&&&& &&&&}&&&&&&&& &&&&&&&& return sUrlL&&&& && }&/PRE&
阅读(...) 评论()<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 正则表达式去除超链接 的文章

 

随机推荐