C# 从.NET中的HTML字符串捕获组的正则表达式

C# 从.NET中的HTML字符串捕获组的正则表达式,c#,html,.net,regex,grouping,C#,Html,.net,Regex,Grouping,希望从html中捕获标题、名称和Val等组 HTML可能会有所不同,但这通常是它的外观 <div> <h5>Header 1</h5> <strong>Name1</strong> &nbsp; Value 1 <br> <strong>Name2</strong> &nbsp;

希望从html中捕获标题、名称和Val等组

HTML可能会有所不同,但这通常是它的外观

<div>
   <h5>Header 1</h5>
      <strong>Name1</strong>
          &nbsp;
          Value 1 <br>
      <strong>Name2</strong>
          &nbsp;
          Value 2 <br>
   <div>
   <h5>Header 2</h5>
      <strong>Name1</strong>
          &nbsp;
          Value 1 <br>
          Value 1 continued
      <strong>Name2</strong>
          &nbsp;
          Value 2 <br>
   <h5>Header 3</h5>
      <strong>Name1</strong>
          &nbsp;
          Value 1 <br>
          Value 1 continued
      <strong>Name2</strong>
          &nbsp;
          Value 2 <br>
   <br>
   </div>
</div>

标题1
Name1
值1
Name2 值2
标题2 Name1 值1
价值1续 Name2 值2
标题3 Name1 值1
价值1续 Name2 值2

这是我开始使用的,但这依赖于在

string pattern = "((<h5>(?<Header>.*?)<\\/h5>)|(<strong>(?<Name>.*?)<\\/strong>)|(&nbsp;(?<Val>.*?)<br>))
string pattern=“(((?*?)|”((?*?)|)((?*?)

从输入中删除“br”标记的并发,瞧。
str.Replace(“
”,“”)
等。

我将模式更改为

string pattern = "(((?<=<h5>)(?<Header>.*?)(?=<\\/h5>))|((?<=<strong>)(?<Name>.*?)(?=<\\/strong>))|((?<=<\\/strong>)(?<Val>.*?)((?=<h5>)|(?=<strong>)|(?=<\\/div>))))";

字符串模式=”(((?这项工作有很多方法可供选择,不要使用正则表达式。我建议您阅读我要强调的是这一部分:HTML可以变化,但它通常是这样的。您对基于HTML解析器的解决方案感兴趣吗?我希望您感兴趣,因为使用解析器,您将能够安全地完成两件事:提取文本和将实体转换为文本。@LuCastzesniewski CsQuery看起来是一个很好的工具。你能帮助我如何选择上面的组或带有更详细示例的链接吗?如果你有一个更清晰更好的答案,谢谢
。当然可以。使用HtmlAgilityPack而不是维护这个怪物字符串:)@Eser请使用HtmlAgilityPack编写一个带有代码的答案。