当前位置: 代码迷 >> ASP.NET >> 正则表达式匹配的有关问题
  详细解决方案

正则表达式匹配的有关问题

热度:9113   发布时间:2013-02-25 00:00:00.0
正则表达式匹配的问题
<ul class="replyList">
<li class="topline" anthorsn="回复@_L6228817: " feedid="1164614083">
<span title="张三(@_L6228817)" class="actor"><a href="http://weibo.10086.cn/_L6228816?sid=0">张三</a>:</span>
不错呀
<span class="props">04月20日 10:23</span>
<span class="props">来自网页</span>
<a title="删除张三的评论" srv="/ajax/json/pushfeed/delfeed/feedid=1164614082" class="ac_feed_reply_delete comment_delete" href="javascript:void(0)">删除</a>
<a class="comment_app ac_replylist_addreply" href="javascript:void(0)">回复</a>
</li>
<li anthorsn="回复@_L6228816: " feedid="1161267279">
<span title="张三(@_L6228816)" class="actor"><a href="http://weibo.10086.cn/_L6228817?sid=0">张三</a>:</span>回复<em rel="@_L39515734"><a href="/_L39515734">李四</a>(@_L39515734)</em>: 不是啊,很好玩
<span class="props">04月18日 22:32</span>
<span class="props">来自网页</span>
<a title="删除张三的评论" srv="/ajax/json/pushfeed/delfeed/feedid=1161267279" class="ac_feed_reply_delete comment_delete" href="javascript:void(0)">删除</a>
<a class="comment_app ac_replylist_addreply" href="javascript:void(0)">回复</a>
</li>
<li anthorsn="回复@_L39515734: " feedid="1161266172">
<span title="李四(@_L39515734)" class="actor">
<a href="http://weibo.10086.cn/_L39515735?sid=0">李四</a>:</span>不好玩<span class="props">04月18日 22:30</span>
<span class="props">来自网页</span>
<a title="删除李四的评论" srv="/ajax/json/pushfeed/delfeed/feedid=1161266172" class="ac_feed_reply_delete comment_delete" href="javascript:void(0)">删除</a>
<a class="comment_app ac_replylist_addreply" href="javascript:void(0)">回复</a>
</li>
</ul>
如上内容:如何匹配出每个li下的"不错呀","04月20日 10:23","/ajax/json/pushfeed/delfeed/feedid=1164614082"
就是要匹配出:
1:"不错呀","04月20日 10:23","/ajax/json/pushfeed/delfeed/feedid=1164614082"
2:"不是啊,很好玩","04月18日 22:32","/ajax/json/pushfeed/delfeed/feedid=1161267279"
3:"不好玩","04月18日 22:30","/ajax/json/pushfeed/delfeed/feedid=1161266172" 
如何写出正则表达式???

------解决方案--------------------------------------------------------
(?is)<li\b[^>]*?>.*?</span>(?:.*?</em>)?([^<>]+).*?<span\sclass="props">([^<>]+)</span>.*?<a\b.*?srv="([^"]+)"[^>]*?>
------解决方案--------------------------------------------------------
C# code
            string str = File.ReadAllText(@"E:\1.txt", Encoding.GetEncoding("gb2312"));            Regex reg = new Regex(@"(?is)<li[^>]*?>\s*<span[^>]*?>.*?</span>(?:[^<>]+<em[^>]*?>.*?</em>:)?([^<>]+)<span[^>]*?>(.*?)</span>.*?<a[^>]*?srv=""([^""]+)""[^>]*?>.*?</li>");            foreach (Match m in reg.Matches(str))                Console.WriteLine("{0} {1} {2}\r\n==============", m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value);/*不错呀 04月20日 10:23 /ajax/json/pushfeed/delfeed/feedid=1164614082============== 不是啊,很好玩 04月18日 22:32 /ajax/json/pushfeed/delfeed/feedid=1161267279==============不好玩 04月18日 22:30 /ajax/json/pushfeed/delfeed/feedid=1161266172==============*/