日期:2014-05-17  浏览次数:20586 次

怎么用如下正则的形式取我给出的HTML字符
本帖最后由 flyso 于 2013-10-16 10:46:22 编辑
HTML字符:
<div style="Z-INDEX: 101;position:absolute;left:23.17mm;top:23.1mm;font-size:20;font-family:黑体;BACKGROUND-COLOR: white; color: black">日期(Date):2012年12月1日</div>

正则形式(用这个正则套)
 var list = Regex.Matches(str, @"(?is)<ST:(?=[^>]*?id=([""'])(?<id>[^""']+)\1)(?=[^>]*?tooltip=([""'])(?<tooltip>[^""']+)\2)[^>]*>").OfType<Match>().Select(t => new { id = t.Groups["id"].Value, tooltip = t.Groups["tooltip"].Value }).ToList();

            if (list.Count > 0)
            {
                foreach (var obj in list)
                {
                    Response.Write("ST:" + obj.id + "id:" + obj.tooltip + "<br />");
                   }
            }


怎么通过以上正则形式获取
 html字符中的
Z-INDEX
left
top
font-size
再就是<div...></div>中间的值,如现在的html就是“日期(Date):2012年12月1日”

------解决方案--------------------
var list = Regex.Matches(tempStr, @"(?is)<div[^>]*?style=(['""]?)(z-index:\s*?(?<zIndex>-?\d+)
------解决方案--------------------
left:\s*?(?<left>-?\d+(\.\d+)?)
------解决方案--------------------
top:\s*?(?<top>-?\d+(\.\d+)?)
------解决方案--------------------
font-size:\s*?(?<fontSize>\d+)
------解决方案--------------------
[^'""])*?\1[^>]*?>\s*?(<b>)?(?<text>((?!<(img
------解决方案--------------------
b)[^>]*?>)[\s\S])*?)\s*?(</b>)?</div>").OfType<Match>().Select(t => new { zIndex = t.Groups["zIndex"].Value, left = t.Groups["left"].Value, top = t.Groups["top"].Value, fontSize = t.Groups["fontSize"].Value, text = t.Groups["text"].Value }).ToList();