正则表达式Google图片

时间:2014-04-18 08:09:59

标签: c# regex rss

我制作RSS阅读器,我需要使用正则表达式找到路径网址图片(Google RSS)。 来自RSS的URL图像例如: RSS频道为https://news.google.com/?output=rss

<img src="//t0.gstatic.com/images?q=tbn:ANd9GcRfMZ3MOzznCthFKCdIan17n9B8vZvEE-tRSQVTcgJa5i1OPfdf90zi4mBuGzPfB7Bj2mwE0TE" alt="" border="1" width="80" height="80" />

顺便说一句。我使用正则表达式:

Regex regx = new Regex("\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))", 

RegexOptions.IgnoreCase);

一些建议?

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式模式:

/(.*\/images.*)/

答案 1 :(得分:0)

首先,你不应该用正则表达式解析xml - &gt;使用XmlDocument,XmlParser,Readers,...

如果您知道自己在做什么,那就是快速而肮脏的正则表达式解决方案。

  1. Feed中的所有图片标记似乎都在描述中 - 标签,它们当然是xml编码的(请记住接下来的几个步骤)
  2. 接下来,您应该查找一些示例img标记
    1. 您是否也在寻找没有src的img-tag,或者是空源?
    2. 整体 - &gt;定义你要找的东西
  3. 设计您的正则表达式
  4. 因为Feed是自动生成的,所以每次标签看起来都是相同的顺序(我们将这个事实用于更短的正则表达式)

    每个img代码都以<开头(但请记住第1点 - &gt; xml编码) 正在寻找&lt;然后是img(当前正则表达式:&lt;img

    接下来是至少一个空白字符。 (当前正则表达式:lt;img\s+

    src属性始终是第一个属性(在本例中),如果存在,所以我们选择src=&quot;(当前正则表达式:&lt;img\s+src=&quot;

    接下来用.*选择网址列表,但要小心*量词是贪婪的,所以我们必须使用延迟量化.*?,最后用&quot;

    最终正则表达式:&lt;img\s+src=&quot;(.*?)&quot;请确保为网址使用括号以便于群组选择。

    最后一步:C#代码

    //quick & dirty :-)
    var url = "https://news.google.com/?output=rss";
    var regex = @"&lt;img\s+src=&quot;(.*?)&quot;";
    
    var RssContent = new StreamReader(((HttpWebRequest)HttpWebRequest.Create(url)).GetResponse().GetResponseStream()).ReadToEnd();
    foreach (Match match in Regex.Matches(RssContent, regex))
    {
        //print img urls
        Debug.WriteLine(match.Groups[1]);
    }
    

    PS:如果你正在尝试编写一个RSS阅读器,你应该使用正则表达式解析html!试图找到一种方法将html转换为xaml并在WPF中编写您的读者,或者通过研究一些开源RSS阅读器开始学习更多关于这些问题的方法