我已經看到了一些我的相關問題,我嘗試了它們,但它們不起作用。 我想匹配來自一個div與id「拇指」的內容。但regex.Success返回false :(C#正則表達式提取一個div的內容
Match regex = Regex.Match(html, @"<div[^>]*id=""thumbs"">(.+?)</div>");
我已經看到了一些我的相關問題,我嘗試了它們,但它們不起作用。 我想匹配來自一個div與id「拇指」的內容。但regex.Success返回false :(C#正則表達式提取一個div的內容
Match regex = Regex.Match(html, @"<div[^>]*id=""thumbs"">(.+?)</div>");
正則表達式是不解析HTML文件的一個不錯的選擇..
HTML不嚴格,也不是經常用它的格式..
爲什麼要使用的解析器?
考慮您regex..There是在那裏你可以破壞你的代碼的情況下無限數量
您可以使用此代碼使用檢索它HtmlAgilityPack
HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
var itemList = doc.DocumentNode.SelectNodes("//div[@id='thumbs']")//this xpath selects all div with thubs id
.Select(p => p.InnerText)
.ToList();
//itemList now contain all the div tags content having its id as thumbs
不,我不認爲他需要逃脫。他在模式前有@。我認爲這是正確的:
<div[^>]*id="thumbs">(.+?)</div>
所以沒有雙重雙引號
試試這個:
Regex r = new Regex(@"(?<text>(<div\s*?id=(\""|"|&\#34;)"
+ @"thumb(\""|"|&\#34;).*?>)(?>.*?</div>|.*?<div "
+ @"(?>depth)|.*?</div> (?>-depth))*)(?(depth)(?!)).*?</div>",
RegexOptions.Singleline);
部分題外話,但聽起來就像是在HTML敏捷性包 – Sayse