如何使用regex c#避免自定义HTML标签之间的HTML标签
本文关键字:HTML 标签 之间 自定义 何使用 regex | 更新日期: 2023-09-27 17:50:12
我有一个要求,其中
' <H3></H3>'
HTML标签计数需要使用RegEx c#找到。
下面的代码可以正确地找到H3标签计数,前提是中间没有自定义HTML标签(即:(仅包含文本或字符串)。
var regexHeading = new Regex(@"<h3>(.*?)</h3>");
然而,如果标题标签包含任何自定义HTML标签,则上述RegEx不能按预期工作。[Ex: <h3><a></a></h3>].
谁能建议,这是最好的方法来找到HTML标签计数使用正则表达式c#(即使它包含任何自定义标签之间)。
部分解决方案(可能对某些人有帮助):我写了一个自定义标签,但它不是在所有的场景
不推荐使用regex解析html,在stackoverflow中有很多答案。
请使用htmllagilitypack。
的例子:试试这个:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
var h3nodes = doc.DocumentElement.SelectNodes("//body//h3"];
或
var h3nodes = doc.DocumentElement.Descendants("h3");
h3nodes是带有标签"h3"的HTML元素的节点列表。
关于"SelectNodes"方法参数,请阅读XPath。
如果你只是想计算<H3>
元素的匹配数量,那么你只需要匹配开始的元素。
如果你需要确保元素是正确的,并且有一个匹配的关闭标签,那么你当前的RegEx应该工作。如果你能告诉我们你的期望和你得到的结果,那么它将帮助我们给你一个更好的答案。
谢谢Ethan Brown:-)你给的提示解决了我的问题。
正则表达式无法找到
<H3>/n</H3>
所以,我尝试用空字符串替换新行标签,如下所示
publishingPageContent = publishingPageContent.Replace("'n", string.Empty);
var regexHeading = new Regex(@"<h3>(.*?)</h3>");
//Find matching
var matchHeadings = regexHeading.Matches(publishingPageContent);
谢谢你帮我解决这个问题。!)