如何使用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 c#避免自定义HTML标签之间的HTML标签

不推荐使用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);

谢谢你帮我解决这个问题。!)