C# 使用正则表达式检索Html属性

C# 使用正则表达式检索Html属性,c#,.net,regex,C#,.net,Regex,我需要一种快速的方法将一组html属性放入字典中。像这样 <body topmargin=10 leftmargin=0 class="something"> should amount to attr["topmargin"]="10" attr["leftmargin"]="0" attr["class"]="something" 应等于 属性[“topmargin”]=“10” 属性[“leftmargin”]=“0” 属性[“类”]=“某物” 这将在服务器端完成,并且标

我需要一种快速的方法将一组html属性放入字典中。像这样

<body topmargin=10 leftmargin=0 class="something"> should amount to

attr["topmargin"]="10"
attr["leftmargin"]="0"
attr["class"]="something"
应等于
属性[“topmargin”]=“10”
属性[“leftmargin”]=“0”
属性[“类”]=“某物”
这将在服务器端完成,并且标记内容已经可用。我只需要剔除没有值的标记,并考虑不同的引号或缺少值

我猜应该使用正则表达式。发现了一些类似的问题,但没有一个真正符合我的需要

谢谢


编辑:澄清服务器端

如何?

我也认为使用专门的解析器会更好,但如果您想使用正则表达式,请尝试以下方法:

\<(?<tag>[a-zA-Z]+)( (?<name>\w+)="?(?<value>\w+)"?)*\>
\

我刚测试过,效果很好

怎么样?我不想要一个新的框架或html解析器来完成这个我知道一个好的正则表达式可以解决的任务。“我只是在这么多年后仍然喜欢正则表达式。”@danijels——众所周知,使用正则表达式解析HMTL非常困难。我强烈建议你考虑这个答案。(+1顺便说一句)你会花很多时间试图让正则表达式工作,但是像这样的库可能是最好的方法。特别是考虑到大多数HTML源的格式可能有多不正确。regexp对于解析XML之类的东西来说不是很好。属性可以按任意顺序排列,并且是可选的。格式不必在一行上。有时最好使用一个真正理解hwat读取的解析器。+1我很好奇,在这一年的SO中,通过“使用实际的解析器”来回答“哪个正则表达式要解析HTML?”的问题,生成了聚合的rep值。