我有一个HTML源代码作为输入,想知道该网站的CMS是什么。 许多CMS将他们的名字留在这样的元标记中:
<meta name="Generator" content="MY CMS" />
我可以得到这样的结果:
Match match = Regex.Match(html, ".*(?i)meta.*generator.*");
match = Regex.Match(match.ToString(), "content.*\".*\"");
match = Regex.Match(match.ToString(), "\".*\"");
给我“MY CMS”
但有没有办法将其缩短为一个Regex.Match?
请注意,元标记可能是这样的:
<meta content="MY CMS" name="Generator" />
谢谢和最好的问候
答案 0 :(得分:1)
var regex = new Regex(@"<meta\s+name=""Generator""\s+content=""([^""]+)""", RegexOptions.IgnoreCase);
var match = regex.Match(html);
var generator = match.Groups[1].Value;
答案 1 :(得分:1)
尝试以下方法:
Regex regex = new Regex(@"<meta[^>]+content\s*=\s*['"]([^'"]+)['"][^>]*>");
Match match = regex.Match(input);
该值在第1组中。
希望它有所帮助。
答案 2 :(得分:1)
正则表达式不是解析HTML文件的好选择..
HTML不严格,格式也不规则..
正则表达式用于常规表达式NOT 不规则表达式
您可以使用此代码使用HtmlAgilityPack
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var content= doc.DocumentNode
.SelectSingleNode("//meta[@name='Generator']")
.Attributes["content"].Value;