簡體   English   中英

正則表達式匹配和子字符串合而為一?

[英]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既不嚴格也不規范其格式。

使用htmlagilitypack

正則表達式用於正則表達式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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM