我已经看到了我的一些相关问题,并且我尝试了它们,但它们不起作用。我想将 div 中的内容与 ID“thumbs”相匹配。但是 regex.Success 返回 false :(
Match regex = Regex.Match(html, @"<div[^>]*id=""thumbs"">(.+?)</div>");
正则表达式不是解析 HTML 文件的好选择。
HTML 并不严格,其格式也不规则。
为什么要使用解析器?
考虑您的正则表达式。有无数种情况可以破坏您的代码
您可以使用此代码来检索它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);