正则表达式Google图像

本文关键字:图像 Google 正则表达式 | 更新日期: 2023-09-27 17:58:56

我制作RSS阅读器,需要使用正则表达式查找路径url图像(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);

一些建议?

正则表达式Google图像

首先,您不应该使用regex解析xml->使用XmlDocument、XmlParser、Readers

如果你知道你在这里做的是快速而肮脏的regex解决方案。

  1. Feed中的所有图像标签似乎都在描述标签中,它们当然是xml编码的(在接下来的几个步骤中请记住这一点)
  2. 接下来,您应该查找一些img标记的示例
    1. 你是在寻找没有src的img标签,还是有空的源代码
    2. 总体->定义您要查找的内容
  3. 设计您的Regex

因为提要是自动生成的,所以每次标记的顺序似乎都是相同的(我们用这个事实来表示较短的正则表达式)

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

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

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

接下来用.*选择url,但要小心,*量词是贪婪的,所以我们必须使用Lazy量化.*?,最后用&quot; 关闭

最后一个正则表达式:&lt;img's+src=&quot;(.*?)&quot;确保您使用方括号作为url,以便轻松选择组。

最后一步: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]);
}

附言:如果你想写一个RSS阅读器,你应该NOT使用Regex来解析html!尝试找到一种将html转换为xaml的方法,并在WPF中编写您的阅读器,或者通过研究一些开源RSS阅读器

来了解更多关于这些问题的信息

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

/(.*'/images.*)/