我需要解析以下面代码示例的方式格式化的html。我的问题是字段名称可以包含在具有可变背景或颜色样式的标签中。我正在寻找的模式是
标签,忽略任何包裹文本后跟冒号的跨度(这是模式
身份:没有跨度标记包装)。匹配此模式应该为我提供密钥名称,密钥名称后面的任何内容都是密钥值,直到命中下一个密钥名称。下面是我需要解析的html示例。
string source = "
<br />id: Value here
<br /><SPAN style=\"background-color: #A0FFFF; color: #000000\">community</SPAN>: Value here
<br /><SPAN style=\"background-color: #A0FFFF; color: #000000\">content</SPAN><SPAN style=\"background- color: #A0FFFF; color: #000000\">title</SPAN>: Value here
"
//split the source into key value pairs based on the pattern match.
感谢您的帮助。
答案 0 :(得分:2)
以下是一些解析它的代码,假设您的示例HTML在`content'之后应该有另一个<br />
元素。
string source = @"
<br />id: Value here
<br /><SPAN style=""background-color: #A0FFFF; color: #000000"">community</SPAN>: Value here
<br /><SPAN style=""background-color: #A0FFFF; color: #000000"">content</SPAN>
<br /><SPAN style=""background-color: #A0FFFF; color: #000000"">title</SPAN>: Value here";
var items = Regex.Matches(source,@"<br />(?:<SPAN[^>]*>)?([^<:]+)(?:</SPAN>)?:?\s?(.*)")
.OfType<Match>()
.ToDictionary (m => m.Groups[1].Value, m => m.Groups[2].Value)
.ToList();