C# 从.NET中的HTML字符串捕获组的正则表达式
希望从html中捕获标题、名称和Val等组 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> Value 1 <br> <strong>Name2</strong>
<div>
<h5>Header 1</h5>
<strong>Name1</strong>
Value 1 <br>
<strong>Name2</strong>
Value 2 <br>
<div>
<h5>Header 2</h5>
<strong>Name1</strong>
Value 1 <br>
Value 1 continued
<strong>Name2</strong>
Value 2 <br>
<h5>Header 3</h5>
<strong>Name1</strong>
Value 1 <br>
Value 1 continued
<strong>Name2</strong>
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>)|( (?<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编写一个带有代码的答案。