求一个关于超链接提取的正则表达式

bluemouse 2003-10-31 05:28:08
能够分别提取出 href=... 里面的链接和对应的 <a href=..>内容</a> 中的文本内容部分(或者有可能是html代码),应该注意的是 href= 的后面有可能是单引号、双银行或空,如果是单引号或双引号,对应的,也应该是由单引号或双引号结束,如果是空,则应该是遇空格或>结束,举例如下:

<a href='超链接'>文本</a>
<a href="超链接 网址中含有空格">文本</a>
<a href=超链接>文本</a>
<a href= 超链接 >文本</a>

关键是这几种情况的容错

俺对正则一头雾水,还望高手点拨,谢了先。 :)

...全文
988 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjhs 2003-10-31
  • 打赏
  • 举报
回复
楼上的些得挺好
saucer 2003-10-31
  • 打赏
  • 举报
回复
Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>(?<text>.*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline);

MatchCollection mc = re.Matches(str);
Console.WriteLine(mc.Count);
foreach (Match m in mc)
Console.WriteLine("{0}:{1}", m.Groups["href"].Value, m.Groups["text"].Value);
bluemouse 2003-10-31
  • 打赏
  • 举报
回复
这个似乎不行啊,只能提取href里面的链接,而<a >..</a>之间文字提取不出来
saucer 2003-10-31
  • 打赏
  • 举报
回复
go to
http://www.regexlib.com/search.aspx

enter "links" in the keyword textbox and click on Search button

or try

using System.Text.RegularExpressions;

string str = "............";

Regex re = new Regex(@"<a[^>]+href=\s*(?:'(?<href>[^']+)'|""(?<href>[^""]+)""|(?<href>[^>\s]+))\s*[^>]*>", RegexOptions.IgnoreCase | RegexOptions.Singleline);

MatchCollection mc = re.Matches(str);
Console.WriteLine(mc.Count);
foreach (Match m in mc)
Console.WriteLine(m.Groups["href"].Value);
}

110,535

社区成员

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

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

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