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

正则表达式匹配的问题
<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
==============
不好玩