Regex从.NET中的HTML字符串捕获组

本文关键字:字符串 HTML NET 中的 Regex | 更新日期: 2023-09-27 18:09:01

希望从html捕获到Header、Name和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>

这是我开始使用的,但这依赖于在<;br>

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

Regex从.NET中的HTML字符串捕获组

从输入中删除"br"标记的一致性,瞧。str.Replace("<br>","")

I将模式更改为

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

似乎在起作用。如果你有一个更干净更好的答案,我会把你的答案设置为正确的。