HtmlAgilityPack中的可变标签
本文关键字:标签 HtmlAgilityPack | 更新日期: 2023-09-27 18:24:16
我在C#中使用这个命令:
foreach (HtmlNode node in
htmlDoc.DocumentNode.SelectNodes("//tr[@class='discussion r1']"))
问题是我需要所有包含rX
:的节点
discussion r0
discussion r1
discussion r2
如何选择所有rX
节点?如何在一个foreach中只选择r0
和r1
?
HtmlNode.SelectNodes()
只支持XPath 1.0,它不具有正则表达式匹配功能。使用简单的XPath starts-with()
或contains()
函数应该可以完成以下操作:
//using starts-with()
htmlDoc.DocumentNode
.SelectNodes("//tr[starts-with(@class,'discussion r')]")
//or using contains()
htmlDoc.DocumentNode
.SelectNodes("//tr[contains(@class,'discussion r')]")
您可以尝试使用正则表达式(使用matches
函数)来匹配rX
,
- 如果
r
之后只有一个字符,则为//tr[matches(@class,'discussion r.')]
- 至少有一个
//tr[matches(@class,'discussion r.+')]
//tr[matches(@class,'discussion r'd+')]
(如果需要后跟数字)