[英]Regex match and substring in one?
我有一個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(), "\".*\"");
給我“我的CMS”
但是有什么方法可以將其縮短為一個Regex.Match嗎?
請注意,meta標簽可能是這樣的:
<meta content="MY CMS" name="Generator" />
謝謝和最好的問候
var regex = new Regex(@"<meta\s+name=""Generator""\s+content=""([^""]+)""", RegexOptions.IgnoreCase);
var match = regex.Match(html);
var generator = match.Groups[1].Value;
請嘗試以下操作:
Regex regex = new Regex(@"<meta[^>]+content\s*=\s*['"]([^'"]+)['"][^>]*>");
Match match = regex.Match(input);
該值在組1中。
希望能幫助到你。
正則表達式不是解析HTML文件的好選擇。
HTML既不嚴格也不規范其格式。
正則表達式用於正則表達式NOT 不規則表達式
您可以使用此代碼通過HtmlAgilityPack
進行檢索
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var content= doc.DocumentNode
.SelectSingleNode("//meta[@name='Generator']")
.Attributes["content"].Value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.