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

正则表达式怎么写!得到P标签里面的数据
<div class="game_info1">
<p>分类:<a href="/flash_fl/13_1.htm" class="green">儿童小游戏</a> | 大小:205K | 日期:2介绍012-09-03</p>
<p>专题:<a href='/special/223.htm'>幼儿教育</a> <a href='/special/202.htm'>学习类</a> </p></div>


我要分别得到 
 儿童小游戏 
  205 
  跟专题标签里面的数据以逗号隔开(不包括<a>)


<div class="operate">
<div id="GameKey">
<ul><li><SPAN class=ico_c_mouseleft></SPAN>鼠标操作</li></ul><div class='clear'></div><div class="game_cz_fg"></div>
<div class="clear"></div>
</div>
鼠标控制移动,左键点击调下踩跷跷板,注意要踩到正确的答案哦!</div>
<!-- 装扮类独有提示开始 -->
<!-- 装扮类独有提示结束 -->
<h2 class="h2_t t6" title="如何开始"></h2>
<div class="game_caption">游戏加载完成后点击右下角的按钮开始游戏</div>
   
 
   
<h2 class="h2_t t3" title="游戏目标"></h2>
<div class="game_caption"><P>正确的选择算术题的答案,挑战好的成绩吧!</P></div>
   
</div>

我要得到<div class="operate"> 里面的所有数据

<!-- 装扮类独有提示开始 -->
<!-- 装扮类独有提示结束 -->
不包括这个里面的

 我该怎么写

------解决方案--------------------
C# code
 string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("utf-8"));//读取txt
                string pattern_1 = @"(?i)<div[^>]*?class=(['""]?)game_info1\1[^>]*?>\s*?<p>[\s\S]*?<a[^>]*?>([^<>]+?)</a>[^::]*?[::](\d+)[\s\S]*?</p>";
                pattern_1 += @"\s*?<p>[^<>]+?(<a[^>]*?>(?<text>[^<>]+?)</a>\s*?)*?</p></div>";
                //tempStr = Regex.Replace(tempStr,pattern,"<tr>$0</tr>");
                foreach (Match m in Regex.Matches(tempStr, pattern_1))
                {
                    //循环输出
                    // 
                    string t1 = m.Groups[2].Value;//儿童小游戏
                    string t2 = m.Groups[3].Value;//205
                    string t3 = string.Join(",", m.Groups["text"].Captures.Cast<Capture>().Select(a => a.Value));//幼儿教育,学习类

                }

------解决方案--------------------
第二个注意你div的开始和结束地方
C# code
string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("utf-8"));//读取txt
                string pattern_2 = @"(?isx)<div[^>]*class=(['""]?)operate\1[^>]*?>((?><div[^>]*>  (?<Open>)|</div>  (?<-Open>)|(?:(?!</?div\b).)*)*(?(Open)(?!)))</div>";
                string result = Regex.Replace(Regex.Match(tempStr, pattern_2).Groups[2].Value, @"<!--[\s\S]*?-->",string.Empty);
                /*
                 * <div id="GameKey">
                    <ul><li><SPAN class=ico_c_mouseleft></SPAN>鼠标操作</li></ul><div class='clear'></div><div class="game_cz_fg"></div>
                    <div class="clear"></div>
                    </div>
                    鼠标控制移动,左键点击调下踩跷跷板,注意要踩到正确的答案哦!
                 */