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

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>

关键是这几种情况的容错

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

...全文
945 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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);
}
  • 打赏
  • 举报
回复
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
申请成为版主
帖子事件
创建了帖子
2003-10-31 05:28
社区公告

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