[英]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.