难的来了,用正则表达式匹配网页中所有连接

qinamao 2006-09-29 05:29:13
要求匹配所有 能用鼠标点击的连接

...全文
372 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
2sanshi 2006-10-31
  • 打赏
  • 举报
回复
学习
qinamao 2006-09-30
  • 打赏
  • 举报
回复
感谢gzdiablo() 以后向你请教,还请多多帮助!
gzdiablo 2006-09-30
  • 打赏
  • 举报
回复
这个就是获取A标签了
你用这个
<(" + 标签名称+ ")[^>]*>(\s*|.)*</\1>
这个是获取需要关闭标签的标签 即 <XXX></XXX> 的标签 不过不支持嵌套支持嵌套的不太好写
实际是
<(a)[^>]*>(\s*|.)*</\1>
这样就能获取全部A标签 其他标签同理
如果有多种标签就这样写 (a|XXX|xxx)

如果是不需要关闭标签的标签 即 <XXX >的 如<img src="xxx" height="xxx" ...>
就简单多了
<(" + 标签名称+ ")[^>]*>
用这个就行了
qinamao 2006-09-30
  • 打赏
  • 举报
回复
gzdiablo() :


21312sfdr<a href="XXXXXX">xxxxxx</a>asdf

结果是返回包含所有连接标记的:

<a href="XXXXXX">xxxxxx</a>

我想获取上述匹配呢?
gzdiablo 2006-09-29
  • 打赏
  • 举报
回复
(?<=((?:src|href|url|background)(?:\s*=\s*(["']?))))(?:[^\s"'>]*)
用这个可以找出除FLASH几乎所有可能存在的连接
FLASH的连接是写在Value里面的
上面这条语句
假设<a href="XXXXXX">xxxxxx</a>
match获取的是 连接内容即 XXXXXX
group 1 获取的是 前缀 href=" 注:上面语句可以分辨是 双引号 单引号 空
group 2 获取的是 包围符号 即 双引号 单引号 空

如果你想获取全部连接内容包括前缀用下面这句
((?:src|href|url|background)(?:\s*=\s*(["']?)))(?:[^\s"'>]*)[\s"']?
match获取的是 全部连接内容即 href="XXXXXX"
group 1 获取的是 前缀 href=" 注:上面语句可以分辨是 双引号 单引号 空
group 2 获取的是 包围符号 即 双引号 单引号 空


cancerser 2006-09-29
  • 打赏
  • 举报
回复
大概是这样
string a="<a href='ftp://topic.csdn.net/t/\'<t";
Regex rex=new Regex("(http|ftp)://.+(?='|\")");
a=rex.Match(a).Value;
//(http|ftp)这个自己扩充如(http|ftp|udp)
一般是以'或"结尾 如有其他也自己扩充
wshuangminlg 2006-09-29
  • 打赏
  • 举报
回复
帮LZ顶
petshop4 2006-09-29
  • 打赏
  • 举报
回复
+号多余了 不要
<(?<sun>(a|iframe)).*?>.*?</?\k<sun>.*?>
petshop4 2006-09-29
  • 打赏
  • 举报
回复
<(?<sun>(a|iframe)+).*?>.*?</?\k<sun>.*?>
里面只写了A和IFRAME的 别的自己添加吧
qinamao 2006-09-29
  • 打赏
  • 举报
回复
基本的如:<a href=*>**</a>
<iframe src=*><iframe>
<a href=# onclick=*>*</a>
股神 2006-09-29
  • 打赏
  • 举报
回复
up。。。
petshop4 2006-09-29
  • 打赏
  • 举报
回复
请把所有能被鼠标点击的例子都举出来
而不是让别人帮你做功课

111,096

社区成员

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

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

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