日期:2014-05-17  浏览次数:20808 次

求正则表达式一枚
本帖最后由 daibin1976 于 2013-10-17 23:29:53 编辑
大家好,我遇到一个小问题,解决不了,求助,我要获取页面所有包含某关键字的a标签,

1.<a href="http://www.csdn.net">CSDN</a>
2.<a href='http://www.baidu.com'>百度知道CSDN</a>
3.<a href='http://blog.csdn.net'>我的CSDN</a>
4.<a href="javascript:Login()">登陆CSDN</a>
5.<a href="http://Info.csdn.net">有关CSDN的信息</a>
6。<a href="http://www.google.hk">谷歌</a>

我想用正则表达式匹配,在内容中含有CSDN关键字并且href链接是链接地址,而非javascript脚本,如果a标签中不含有href属性,也不匹配,同时不区分单引号,双引号,匹配出来后,希望能获取到相应链接和内容,不知道是否说清楚了,按这个这个说法,上面的举例匹配出来应该是
<a href="http://www.csdn.net">CSDN</a>
<a href='http://www.baidu.com'>百度知道CSDN</a>
<a href="http://Info.csdn.net">有关CSDN的信息</a>
我自己搞的<a href=[""']?(<url>)[""']?[^>]?>(<text>)</a>一个都匹配不出来
正则表达式 C#

------解决方案--------------------
(?i)<a\b[^>]*?href=(['"]?)http://[^'"]+\1[^>]*>[^<>]*csdn[^<>]*</a>
------解决方案--------------------
(?i)<a\b[^>]*?href=(['"]?)(?<url>http://[^'"]+)\1[^>]*>(?<text>[^<>]*csdn[^<>]*)</a>
------解决方案--------------------
引用:
大家好,我遇到一个小问题,解决不了,求助,我要获取页面所有包含某关键字的a标签,

1.<a href="http://www.csdn.net">CSDN</a>
2.<a href='http://www.baidu.com'>百度知道CSDN</a>
3.<a href='http://blog.csdn.net'>我的CSDN</a>
4.<a href="javascript:Login()">登陆CSDN</a>
5.<a href="http://Info.csdn.net">有关CSDN的信息</a>
6。<a href="http://www.google.hk">谷歌</a>

我想用正则表达式匹配,在内容中含有CSDN关键字并且href链接是链接地址,而非javascript脚本,如果a标签中不含有href属性,也不匹配,同时不区分单引号,双引号,匹配出来后,希望能获取到相应链接和内容,不知道是否说清楚了,按这个这个说法,上面的举例匹配出来应该是
<a href="http://www.csdn.net">CSDN</a>
<a href='http://www.baidu.com'>百度知道CSDN</a>
<a href="http://Info.csdn.net">有关CSDN的信息</a>
我自己搞的<a href=[""']?(<url>)[""']?[^>]?>(<text>)</a>一个都匹配不出来

你的规则有问题。你先说说下面的为什么不满足你的条件:内容有CSDN关键字,并且href链接是链接地址,a标签中也含有href属性。
3.<a href='http://blog.csdn.net'>我的CSDN</a>
------解决方案--------------------
根本没有匹配这两个捕获组,哪来的值?

  keyword.Link = mA.Groups["link"].Value;
  keyword.Title = mA.Groups["title"].Value;

还有帖出你的测试数据,或者你自己DEBUG看一下就知道了


------解决方案--------------------

------解决方案--------------------
另外,根据版主的表达式是可以得出结果的。
static void Main(string[] args)
        {
            string htmls = "<a href=\"http://www.csdn.net\">CSDN</a><a href='http://www.baidu.com'>百度知道CSDN</a><a href='http://blog.csdn.net'>我的CSDN</a><a