簡體   English   中英

無法使我的正則表達式正常工作

[英]Can't get my regex to work

我正在嘗試使用C#從html響應頁面中提取某些標簽之間的文本。

<input type="hidden" name="79bddb76e349d12a5be85c0d183923f7" value="1" /> 

我需要值79bddb76e349d12a5be85c0d183923f7。 僅此值更改,零件值= 1每次都保持不變。 另請注意,在此之前還有另外兩個隱藏字段:

<input type="hidden" name="test" value="example" />

<input type="hidden" name="task" value="login" />

那么我需要使用matchcollections嗎? 什么是正則表達式?

謝謝。

您可以嘗試將文檔解析為XHTML,然后使用XPath提取所需的信息:

//input[@value = '1']/name

使用正則表達式,您可以按照以下方式使用:

name="([^"]+)" value="1"

通常,將文檔解析為XHTML優於直接在HTML上使用正則表達式,因為使用正則表達式解析HTML可能很脆弱。 但是,如果您確實想使用正則表達式,則可能會執行以下操作:

IEnumerable<string> GetNamesInHtml(string html)
{
    const string pattern = @"<input type=\""hidden\"" "
           + @"name=\""([0-9a-f]{32})\"" value=\""1\"" />";
    return Regex.Matches(html, pattern)
         .OfType<Match>()
         .Select(x => x.Groups[1].Value); 
}

作為司機:

string input = @"<input type=""hidden"" name=""79bddb76e349d12a5be85c0d183923f7"" value=""1"" />
           other html <b>sldkjflsdkjf</b> ipsum 
           <input type=""hidden"" name=""task"" value=""login"" />
           <input type=""hidden"" name=""33947f979873987d9879283473a98738"" value=""1"" /> ";
foreach (string s in GetNamesInHtml(input))
    Console.WriteLine(s);
// prints:
// 79bddb76e349d12a5be85c0d183923f7
// 33947f979873987d9879283473a98738

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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