[英]How to avoid HTML Tags in between custom HTML Tags using regex c#
我有一个要求,其中
'<H3></H3>'
需要使用RegEx C#查找HTML标记计数。
如果之间没有自定义HTML标签(即仅包含文本或字符串),则以下代码可正确找到H3标签计数。
var regexHeading = new Regex(@"<h3>(.*?)</h3>");
而如果标题标签包含任何自定义HTML标签,则上述RegEx无法正常工作。 [Ex: <h3><a></a></h3>].
任何人都可以建议这是使用正则表达式c#查找HTML标记计数的最佳方法(即使它之间包含任何自定义标记)。
部分解决方案(可能对某人有所帮助):我编写了一个自定义标签,但并非在所有情况下都有效
不建议使用正则表达式解析html,在stackoverflow中有很多答案。
请改用HtmlAgilityPack 。
示例:尝试以下操作: HtmlDocument doc = new HtmlDocument(); doc.Load("file.htm"); var h3nodes = doc.DocumentElement.SelectNodes("//body//h3"];
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>
元素的匹配数,则只需要匹配开始元素。
如果您需要确保元素的格式正确并具有匹配的close标签,那么您当前的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);
感谢Guyz帮助我解决此问题。 !:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.