正则表达式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);
一些建议?
首先,您不应该使用regex解析xml->使用XmlDocument、XmlParser、Readers
如果你知道你在这里做的是快速而肮脏的regex解决方案。
- Feed中的所有图像标签似乎都在描述标签中,它们当然是xml编码的(在接下来的几个步骤中请记住这一点)
- 接下来,您应该查找一些img标记的示例
- 你是在寻找没有src的img标签,还是有空的源代码
- 总体->定义您要查找的内容
- 设计您的Regex
因为提要是自动生成的,所以每次标记的顺序似乎都是相同的(我们用这个事实来表示较短的正则表达式)
每个img标记都以<
开头(但请记住第1点->xml编码)寻找<然后是img
(当前正则表达式:<img
接下来至少跟一个空白字符。(当前正则表达式:lt;img's+
src属性始终是第一个属性(在本例中),如果存在,则我们选择src="
(当前正则表达式:<img's+src="
)
接下来用.*
选择url,但要小心,*
量词是贪婪的,所以我们必须使用Lazy量化.*?
,最后用"
关闭
最后一个正则表达式:<img's+src="(.*?)"
确保您使用方括号作为url,以便轻松选择组。
最后一步:C#代码
//quick & dirty :-)
var url = "https://news.google.com/?output=rss";
var regex = @"<img's+src="(.*?)"";
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.*)/